csvファイルでパターンと一致しない行をチェックし、間違った行でメールを送信するシェルスクリプト(bash)があります。それはうまく動作しますが、間違った行を組み合わせている間、Linuxは改行として\ rを付けますが、電子メールに改行はありません。ですから、改行として\ r \ nを送信しようとしますが、これは効果がありません。この\ n改行は、perlやbashで削除してください。ここで shellscriptから電子メールの改行を取得するには?
は、一例として、最小限の作業スクリプトです:SUBJECT="Error while parse CSV"
TO="[email protected]"
wrongLines=$(perl -ne 'print "Row $.: $_\r\n" if not /^00[1-9]\d{4,}$/' $file)
MESSAGE="Error while parse following Lines, pattern dont match: \r\n $wrongLines"
echo $MESSAGE |od -c
ODの出力は次のようになります。
0000000 E r r o r w h i l e p a r s
0000020 e f o l l o w i n g L i n e
0000040 s , p a t t e r n d o n t
0000060 m a t c h : \ r \ n R o w
0000100 2 : 4 9 2 7 8 3 8 7 4 3 \r R
0000120 o w 3 : 4 8 2 3 2 8 9 7 3 8
0000140 \r \n
0000143
しかし、OD出力の行との間に\ nがあるという理由は何ですか削除?私は\ r \ nの代わりに\ x0D \ x0Aも試してみますが、これも役に立たない。助言がありますか?
さらに引用符を使用してください: 'echo" $ MESSAGE "'。そしてあなたは '\ r'を望んでいない。 –
[echo 'マニュアルページ](http://man7.org/linux/man-pages/man1/echo.1.html)を読むべきでしょうか?代わりに['printf'](http://man7.org/linux/man-pages/man1/printf.1.html)を使用してください。 –
@gniourf_gniourfシーケンス '\ r \ n'は多くのテキストベースのプロトコルの標準改行文字です。 –