我正在嘗試撰寫一個 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”而不是換行符。
uj5u.com熱心網友回復:
您可以替換換行符。
echo "$hostname, $id, ${result//$'\n'/\\n}" >> test.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410600.html
標籤:
