我的文件(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
但是我不能用上面的两个命令来做。
有人可以帮助我。
由于
答案 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