在文本文件中用逗号替换所有空格


10

我需要用逗号替换文本中的所有空格。我当前正在使用这一行,但它不起作用:输出的文本文件与原始文件完全相同:

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

谢谢


SED的/ [[:空白:]] \ + /,/ G'
mug896

@ mug896在Ubuntu 18.04上为我工作,在+
dmontaner

Answers:


15

sed

sed -e 's/\s\+/,/g' orig.txt > modified.txt

或搭配perl

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

编辑:要在perl中排除换行符,可以使用双负号's/[^\S\n]+/,/g'或仅与您选择的空白字符匹配's/[ \t\r\f]+/,/g'


谢谢,但是仍然存在一个问题:我不想用逗号替换“下一行\ n”,而使用perl的命令目前正在执行。她sed您编写的命令,但仍然无法正常工作。
aneuryzm 2011年

抱歉,您需要+在sed中转义操作员,我刚刚更新了答案。换行符是perl中的whitepsace类,因此如果您不希望包含它,则必须手动执行whitepsace类。我为此添加了两个解决方案。
Caleb

13

使用tr

tr -s '[:blank:]' ',' <file

这将用逗号替换任何水平空格。任何重复的空格将只替换为一个逗号。


-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

这里的文件名为Servers。包含以下内容。

Server1
Server2
Server3

如果使用上面的命令,我们将获得以下输出。

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.