awk文字列の後に '\ n'が続きます。

awk文字列の後に '\ n'が続きます。

A.conf以下を含むプレーンテキスト構成ファイルを解析しようとしています。

bitrate 500000
use_can 1

bitrate適切なビットレートでCANインターフェースを設定するために後者の数字を使用したいと思います。私のシェルスクリプトの対応する部分は次のとおりです。

bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')"
sudo /sbin/ip link set can0 up type can bitrate $bitrate

数字の後に1つ以上の空白文字が続くと500000正しく機能しますが、改行文字が続くと正しく機能しません。この場合、次のエラー出力が表示されます。

" is wrong: invalid "bitrate" value

この行動の理由は何ですか?どうすれば解決できますか?私は、すべての構成ファイルのすべての新しい行の前にスペース文字が必要であるという事実に頼りたくありません。

ベストアンサー1

入力ファイルにDOSキャリッジリターン(ctrl-M、octal \015)が含まれているようです。合理的な解決策は、最初からWindowsエディタを使用しないのではなく、文字を明示的に削除することです。

bitrate="$(tr -d '\015' < /home/pi/A.conf | awk '/bitrate/ {print $2}')"

また、これが役に立たないものとcat役に立たないものをどのように取り除くかに注意してくださいgrep

おすすめ記事