使用sed删除前导和尾随空格

时间:2016-03-02 22:19:30

标签: macos sed

我有一个看起来像这样的文件:

   2 1 word
  78 3 other words
   2 some other words here
  54 bla bla

我想删除空格并在值和休息之间加上逗号。输出应该看起来像

2,1 word
78,3 other words
2,some other words here
54,bla bla

命令

sed -e 's/\s*([0-9])+\s.+/&/'

不会改变任何东西

4 个答案:

答案 0 :(得分:3)

这应该可以解决问题吗?

sed -Ee 's/^[[:space:]]+([0-9]+)[[:space:]]+/\1,/' bob 
2,1 word
78,3 other words
2,some other words here
54,bla bla

答案 1 :(得分:0)

您可以使用此sed删除每行中的所有前导和尾随空格,并在第一个数字后插入逗号:

sed -E 's/^[[:blank:]]+|[[:blank:]]+$//g; s/([[:digit:]]+)[[:blank:]]*/\1,/' file

2,1 word
78,3 other words
2,some other words here
54,bla bla

但是,如果每行中没有尾随空格,请使用:

sed -E 's/^[[:blank:]]*([[:digit:]]+)[[:blank:]]*/\1,/' file

[[:blank:]]匹配空格或标签。

答案 2 :(得分:0)

这适用于任何POSIX sed:

$ sed 's/^[[:space:]]*//; s/[[:space:]]*$//; s/[[:space:]]/,/' file
2,1 word
78,3 other words
2,some other words here
54,bla bla

答案 3 :(得分:-1)

尝试:

sed -e 's/(\d) (\d)(*)/\1,\2\3' infile.txt