将文件中的多行转换为单行会丢失双引号

将文件中的多行转换为单行会丢失双引号

这是我的示例文件

cat test.txt
"IND WEB",
"Speed Web (Internal webserver)",
"Web Bill",

我尝试了以下两种解决方案将多行转换为单行,但是双引号"丢失了!

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

相关内容