これは私のサンプルファイルです。
cat test.txt
"IND WEB",
"Speed Web (Internal webserver)",
"Web Bill",
複数行を1行に変換するために、次の2つの解決策を試しましたが、二重引用符は"
ありません!
cat listofapps.txt | xargs -s 8192
IND WEB, Speed Web (Internal webserver), Web Bill,
tr '\n' < listofapps.txt
IND WEB, Speed Web (Internal webserver), Web Bill,
二重引用符を維持するように提案できますか?
答え1
xargs
二重引用符はxargs
ユーティリティによって解釈されるため、使用時に失われます(参照:xargsが入力から引用符を削除するのはなぜですか?)。
コマンドtr
が破損してエラーメッセージが表示されます。
tr
次のように改行文字を削除するには
tr -d '\n' <file
改行をスペースに置き換えるには、次のようにします。
tr '\n' ' ' <file
スペースで行を連結するには:
paste -sd ' ' file
(上記と同じですが、最後に改行文字を追加して有効なテキスト行にします。)
答え2
sed
方法:
sed '${G;s/\n//g;p;};H;d' sample.txt
同じですが、コメントに記載されています。
sed '
${
# If we are in the last line
G; # Get anything stored in the hold space
s/\n//g; # Replace any occurrence of space with nothing
p; # Print
}
# We are not in the last line so
H; # save the current line
d; # and start the next cycle without print
' sample.txt