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)
如果这不起作用,那么你将不得不更仔细地检查你的文件(例如在十六进制编辑器中),以找出你想要移除的实际字符.
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.
请注意,目标文件名不同,这一点很重要,否则您将擦除原始内容!
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)
这个页面这里有一堆其他方法来删除换行符。
编辑以消除猫的虐待:)
您可以在 vim 中编辑该文件:
$ vim inputfile
:%s/\n//g
Run Code Online (Sandbox Code Playgroud)
使用
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。