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

Alu*_*ard 91 linux bash shell scripting sed

我有以下数据,我需要把它全部放在一行.

我有这个:

22791

;

14336

;

22821

;

34653

;

21491

;

25522

;

33238

;
Run Code Online (Sandbox Code Playgroud)

我需要这个:

22791;14336;22821;34653;21491;25522;33238;
Run Code Online (Sandbox Code Playgroud)

编辑

这些命令中没有一个完美地运行.

他们中的大多数都让这样的数据:

22791

;14336

;22821

;34653

;21491

;25522
Run Code Online (Sandbox Code Playgroud)

Tyl*_*nry 203

tr -d '\n' < yourfile.txt
Run Code Online (Sandbox Code Playgroud)

编辑:

如果此处发布的命令都不起作用,那么除了用于分隔字段的换行符之外,还有其他内容.可能你在文件中有DOS/Windows行结尾(虽然我希望Perl解决方案在这种情况下也可以工作)?

尝试:

tr -d "\n\r" < yourfile.txt
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,那么你将不得不更仔细地检查你的文件(例如在十六进制编辑器中),以找出你想要移除的实际字符.

  • 我希望删除这些换行符不是你真正的功课! (19认同)
  • 如何将此输出写入相同或另一个文件? (6认同)
  • 我认为 `tr` 不适合空行。你怎么认为?- - 我认为 `sed` 是这里描述的最佳选择 http://stackoverflow.com/q/16414410/54964 (3认同)
  • 要输出到文件,请在命令后附加`&gt; outfile`。 (2认同)
  • 要将输出写入同一文件,请使用子 shell `echo -n $(tr -d "\n" &lt; yourfile.txt) &gt; yourfile.txt` (2认同)

Nag*_*gev 12

扩展之前的答案,这会删除所有新行并将结果保存到新文件中(感谢@tripleee):

tr -d '\n' < yourfile.txt > yourfile2.txt
Run Code Online (Sandbox Code Playgroud)

这比“没用的猫”更好(见评论):

cat file.txt | tr -d '\n' > file2.txt
Run Code Online (Sandbox Code Playgroud)

对于删除文件末尾的新行也很有用,例如,使用echo blah > file.txt.

请注意,目标文件名不同,这一点很重要,否则您将擦除原始内容!

  • 这更加复杂,因为众所周知的“echo -n”可移植性问题。最简单、明显的惯用方法是 `tr -d '\n' &lt;file.txt &gt;file2.txt` (2认同)

Viv*_*ath 11

tr -d '\n' < file.txt
Run Code Online (Sandbox Code Playgroud)

或者

awk '{ printf "%s", $0 }' file.txt
Run Code Online (Sandbox Code Playgroud)

或者

sed ':a;N;$!ba;s/\n//g' file.txt
Run Code Online (Sandbox Code Playgroud)

这个页面这里有一堆其他方法来删除换行符。

编辑以消除猫的虐待:)


ZyX*_*ZyX 10

perl -p -i -e 's/\R//g;' filename
Run Code Online (Sandbox Code Playgroud)

必须做好这份工作.


log*_*hee 6

您可以在 vim 中编辑该文件:

$ vim inputfile
:%s/\n//g
Run Code Online (Sandbox Code Playgroud)

  • 并用空格替换:`:%s/\n/ /g` (2认同)

MrE*_*MrE 5

使用

head -n 1 filename | od -c
Run Code Online (Sandbox Code Playgroud)

找出有问题的角色是什么。

然后使用

tr -d '\n' <filename
Run Code Online (Sandbox Code Playgroud)

对于低频,和

tr -d '\r\n' <filename
Run Code Online (Sandbox Code Playgroud)

对于 CRLF。