Linuxには、各レコードに1行のファイルがありますが、行に改行が含まれていると問題が発生します。この場合、バックスラッシュが行末に追加され、レコードが複数行に分割されます。私の質問は次のとおりです。
"abc def \
xyz pqr"
しなければならない:
"abc def xyz pqr"
私はsed -I 's/\\\n/ /g' <file_name>
何がうまくいかなかったかを試しました。そのコマンドも試しましたが、tr
文字列以外の文字のみを置き換えました。この問題を処理するためのコマンドを提案できますか?
答え1
あなたは利用可能でなければなりません
sed -e :a -e '/\\$/N; s/\\\n//; ta'
ピーター・クラミングズを見る有名なSed Quipsの説明、パート1、39. 行がバックスラッシュ「\」で終わったら、次の行に追加します。。
答え2
あなたはそれを使用することができますawk
:
$ awk 'sub(/\\$/,""){printf("%s", $0);next};1' file
"abc def xyz pqr"
答え3
最も短い解決策はPerlを使用しているようです。
perl -pe 's/\\\n//'
答え4
別のawk
変更
awk '{ORS = /\\/? "": RS; sub(/\\$/, ""); print}' file