Text-Processing
字元串的 awk 後跟 ’n'
我嘗試解析
A.conf
具有以下內容的純文字配置文件:bitrate 500000 use_can 1
我想使用後面的數字
bitrate
來設置具有適當比特率的 CAN 介面。這是我的 shell 腳本的相應部分:bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')" sudo /sbin/ip link set can0 up type can bitrate $bitrate
如果在 number 之後至少有一個空格字元,它可以正常工作
500000
,但如果它後面緊跟著換行符則不行。在那種情況下,我得到這個錯誤輸出:" is wrong: invalid "bitrate" value
這種行為的原因是什麼,我該如何解決?我不想依賴每個配置文件在每個新行之前都需要空格字元這一事實。
您的輸入文件顯然包含一個 DOS 輸入符(ctrl-M, octal
\015
)。理智的解決方案不是首先不使用 Windows 編輯器;一個合理的解決方法是顯式刪除此字元。bitrate="$(tr -d '\015' < /home/pi/A.conf | awk '/bitrate/ {print $2}')"
還要注意這如何消除 useless
cat
和 uselessgrep
。