用sed删除所有领先/下列空格在文本文件中(Use sed to delete all leadin

2019-08-21 09:46发布

文件1:

  hello  
  world  

如何将一个删除使用SED这个文件中的前/后空格- 使用一个命令(无中间文件)?

我目前有:

sed -e 's/^[ \t]*//' a > b

对于前导空格。

sed 's/ *$//' b > c

这对于尾部的空格。

Answer 1:

你几乎得到它:

sed -e 's/^[ \t]*//;s/[ \t]*$//' a > c

而且对一些口味sed ,还有编辑内嵌一个选项:

sed -i -e 's/^[ \t]*//;s/[ \t]*$//' a


Answer 2:

更简单的方法,用awk

awk '{$1=$1}1' file

要么

awk '{gsub(/^ +|  +$/,"")}1' file


Answer 3:

perl -lape 's/^\s+|\s+$//g'

老实说,我知道Perl的正则表达式是最好的,所以我觉得perl -lape但更易于使用sed -e

此外,要回答原来的问题,你可以用sed执行这样的多个操作:

sed -e 's/something/something else/' -e 's/another substitution/another replacement/'

显然,你也可以把两个换人的一个字符串,并用分号,单独作为在另一个答复中指出。



Answer 4:

注意,在一排的输入文件应用几个过滤器,而不使用中间文件的更一般的情况下,该解决方案是使用管道:

sed -e 's/^[ \t]*//' a | sed -e 's/ *$//' > c

显然,这里不再必需的,因为sed的一个调用就足够了,但如果第二次中美战略经济对话的命令是不同的东西,喜欢的uniq或排序,那么这种模式是正确的。



文章来源: Use sed to delete all leading/following blank spaces in a text file