ファイルの複数行を1行に変換すると、二重引用符が失われます。

ファイルの複数行を1行に変換すると、二重引用符が失われます。

これは私のサンプルファイルです。

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

関連情報