如何从文件中删除所有换行符?

如何从文件中删除所有换行符?

cat file.txt | gawk '{print $2}' > test我有显示命令:

1
1
0
0
1
1

然后:

vi test
:%s/\n//

输出:110011

我的问题是我不知道如何将这最后一步与管道结合起来。

更新:可能与有关sed。我尝试使用sed 's/\n//'但仍然不起作用(它没有任何变化)。

答案1

要删除文件中的字节,test只需使用tr.这将保存输出到test2

<test tr -d '\n' >test2

你应该直接重定向,而不是cat像这样使用管道

您可以使用awk但它也会接收一个文件名,因此不需要像您的答案中那样将输出传递给它,而且您实际上也不需要这样的 2 个步骤。只需设置输出记录分隔符默认情况下,新行将变为空字符串。这将把原始文件中的第二个字段直接打印到输出文件中

awk -v ORS='' '{ print $2 }' file.txt >test
# or
awk -v ORS='' '{ print $2 }' <file.txt >test

或者可以像这样设置变量

awk 'BEGIN { ORS="" } { print $2 }' file.txt >test

您可能需要END { print "\n" }在末尾添加打印换行符

在线 bash 演示

答案2

另一种方法是:

gawk '{print $2}' file.txt | paste -d'\0' -s

-s连续paste -d '\0'粘贴时没有分隔符。

答案3

您将需要另一个将换行符替换为“”的 gawk:

cat file.txt | gawk '{print $2}' | gawk '{printf "%s",$0} END {print ""}'

来源:1(serverfault.com)

更简单:

cat test | awk '{printf $2} END {print ""}'

最后:

cat test | gawk '{printf $2}'

(使用 cygwin64 终端)

答案4

使用拉库(以前称为 Perl_6)

Raku 是 Perl 家族编程语言中的一种。具体来说,Raku 内置了高级 Unicode 支持,无需任何外部库:

~$ cat test | raku -e 'lines.join.put;' 

#OR

~$ cat test | raku -ne '.print;' 

示例输入:

1
1
0
0
1
1

示例输出:

110011

https://raku.org

相关内容