使用sed删除文本文件中的所有前导/后续空格

文件1:

hello world 

如何使用sed删除这个文件中的前/后空格 – 使用一个命令(没有中间文件)

我目前得到:

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

领先的空间。

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

而这为尾随空间。

Solutions Collecting From Web of "使用sed删除文本文件中的所有前导/后续空格"

你几乎明白了:

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

此外在sed一些风格,也有内联编辑选项:

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

更简单的方法,使用awk

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

要么

 awk '{gsub(/^ +| +$/,"")}1' file 
 perl -lape 's/^\s+|\s+$//g' 

老实说,我知道perl是最好的,所以我发现perl -lapesed -e更容易使用。

另外,要回答原来的问题,你可以让sed执行如下的多个操作:

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

显然你也可以把两个替换放在一个字符串中,并用分号分隔,如另一个答案所示。

请注意,在不使用中间文件的情况下,将多个过滤器连续应用于输入文件,解决方法是使用管道:

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

显然这里不需要它们,因为sed的调用是足够的,但是如果第二个sed命令是不同的,像uniq或者sort,那么这个模式是正确的。