Text-Processing

字元串的 awk 後跟 ’n'

  • August 13, 2018

我嘗試解析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}')"

還要注意這如何消除 uselesscat和 useless grep

引用自:https://unix.stackexchange.com/questions/462263