用sed删除前导空格

时间:2013-11-20 10:37:03

标签: bash

我的文件(list6.txt)看起来像:

xxxxxxx xxxxxxxxx;

xxxxxx xxxxx PxxxxxxxxFxxxxxx xxxxxxx PxxxxxxxxFxxxxxx {

    @Oxxxxxxx
    xxxxxx Sxxxxx xxxNxxx() {
        xxxxxx "Pxxxx_Pxxxxxxxx";
    }

    @Oxxxxxxx
    xxxxxx Pxxxxxxxx xxxxxxPxxxxxxxx(Cxxxxxx xxx) {
        xxxxxx xxx Pxxxxxxxx(xxx);
    }

}

我试图用命令删除所有前导空格:

cat list6.txt | sed 's/^[ \t]//'
OR
sed 's/^[ \t]*//' list6.txt

但是我不能用上面的两个命令来做。

有人可以帮助我。

由于

4 个答案:

答案 0 :(得分:4)

使用这个更便携的sed:

sed -i.bak 's/^[[:space:]]*//' file

这同样适用于gnu-sed和BSD sed。

答案 1 :(得分:1)

试试这个:

sed 's/^[ \t]*\(.*$\)/\1/' your.file

它将匹配匹配组1中前导空格后面的所有内容。在替换模式中,只重新包含此匹配,但不包括前导空格。

答案 2 :(得分:1)

你的sed命令没问题,(第一个缺少*),我想你可能希望在你的文件中完成更改,所谓的“就地”更改。

你需要-i选项(gnu sed)。它看起来像:

sed -i 'code' file

查看手册页以获取详细信息。为了您的命令,请尝试:

sed -i 's/^[ \t]*//' list6.txt

请注意,[ \t]可以写为\s

答案 3 :(得分:0)

在Mac OS X上使用的FreeBSD sed需要在-e选项后-i切换来定义&正确识别以下正则表达式&明确。

- sed -i 's/^[ \t]*//' list6.txt
+ sed -i -e 's/^[ \t]*//' list6.txt