在变量中保存 linux 命令的结果时,我想将换行符更改为字符串
I want to change newline to a string when saving the result of a linux command in a variable
我正在尝试编写一个 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字符串,但在echo中判断“\n”变为0x0a
请问是否有办法将回显输出更改为字符串“\n”而不是换行符。
您可以替换换行符。
echo "$hostname, $id, ${result//$'\n'/\n}" >> test.csv
我正在尝试编写一个 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字符串,但在echo中判断“\n”变为0x0a
请问是否有办法将回显输出更改为字符串“\n”而不是换行符。
您可以替换换行符。
echo "$hostname, $id, ${result//$'\n'/\n}" >> test.csv