regex 使用sed删除前导空格

2w2cym1i  于 2022-11-18  发布在  其他
关注(0)|答案(4)|浏览(239)

我有一个文件(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

然而,我不能做到这一点与以上2个命令。
谁能帮我一下。
谢谢

w8biq8rn

w8biq8rn1#

使用此更便携的sed:

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

这也适用于gnu-sed和BSD sed。

qeeaahzv

qeeaahzv2#

试试看:

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

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

umuewwlo

umuewwlo3#

你的sed命令是可以的,(第一个缺少一个*),我猜你可能希望在你的文件中进行更改,所以称为“就地”更改。
您需要-i选项来执行此操作(gnu sed)。它看起来像:

sed -i 'code' file

有关详细信息,请查看手册页。对于您命令,请尝试:

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

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

qf9go6mv

qf9go6mv4#

FreeBSD sed,在Mac OS X上使用,需要在-i选项后使用-e开关来定义和识别下面的正则表达式。

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

相关问题