我正在尝试编写一个shell脚本,该脚本读取linux的系统配置状态并将结果保存为CSV。
要保存的结果是主机名、设置标准ID和实际设置值。
保存为csv时最有问题的部分是换行符。
例如,
#!/bin/bash
hostname='linux01'
id='SRV-01'
result="*result*\n"
result=$result`cat /etc/passwd | head -n 5`
echo "$hostname, $id, $value" >> test.csv
当上述脚本存在时,CSV格式由于换行而中断。
当脚本结果如下
linux01, SRV-01, *result*
root:x:0:0:root:/root:/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
我要将此更改保存到csv文件
linux01, SRV-01, *result*\nroot:x:0:0:root:/root:/bin/zsh\ndaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\nbin:x:2:2:bin: /bin:/usr/sbin/nologin\nsys:x:3:3:sys:/dev:/usr/sbin/nologin\nsync:x:4:65534:sync:/bin:/bin/sync
首先,我使用sed作为测试,将\n更改为\n,但在使用echo输出时,\n字符串更改为换行符。
echo `cat /etc/passwd | head -n 5 | sed -z 's/\n/\\\n/g'`
在变量中保存为\n字符串,但在回显中判断“\n”变为0x0a。
询问是否有办法将echo输出更改为字符串“\n”而不是换行符。
1条答案
按热度按时间dgiusagp1#
您可以替换换行符。