如何删除/添加空格在所有TEXTFILES?(How to remove/add spaces in

2019-10-20 18:42发布

我有几个文件看起来像这些,如test.in

apple foo bar
hello world

我要做到这一点所需的输出,每一个字符后面输入一个空格:

a p p l e f o o b a r
h e l l o w o r l d

不过,我觉得可能我会先删除所有空格,然后添加空格每个字符,因为这样的:

sed 's/\s//g' test.in | sed -e 's/\(.\)/\1 /g'

但是否有其他方法吗?

Answer 1:

您可以将两者结合起来sed命令成一个单一的命令:

$ sed 's/\s//g;s/./& /g' test.in 
a p p l e f o o b a r 
h e l l o w o r l d 

使用注意事项.&代替\(.\)\1

在不支持的系统\s指定匹配空格,你可以使用[[::blank::]]而不是:

$ sed 's/[[:blank:]]//g;s/./& /g' test.in 
a p p l e f o o b a r 
h e l l o w o r l d 


Answer 2:

awk可以这样做:

awk -v FS="" '{gsub(/ /,"");$1=$1}1' file
a p p l e f o o b a r
h e l l o w o r l d

因为这个首先删除所有空间,则FS (字段分隔符)被设置为任何操作, $1=$1重建所有字段具有一个空间。

这不,在年底,因为大多数其他的添加空间sedperl命令在这里。


或基于sed贴在这里。

awk '{gsub(/ /,"");gsub(/./,"& ")}1' file
a p p l e f o o b a r
h e l l o w o r l d


Answer 3:

通过perl的,

$ perl -ple 's/([^ ]|^)(?! )/\1 /g' file
a p p l e f o o b a r 
h e l l o w o r l d 

添加联编辑选项-i来保存所做的修改,

perl -i -ple 's/([^ ]|^)(?! )/\1 /g' file


Answer 4:

sed 's/ //g;s/./& /g' filename

& :是指匹配的模式空间的那部分



Answer 5:

或者,也许像这样的东西sed

$ sed 's/./& /g;s/  //g' file
a p p l e f o o b a r
h e l l o w o r l d


Answer 6:

这可能会为你工作(GNU SED):

sed 's/\B/ /g' file


文章来源: How to remove/add spaces in all textfiles?