我正在尝试使用以下命令删除行开头的数字:
sed -i 's/^\d*\t//' sea_news_2020_corpus.txt
该行如下所示:
809940 The sea will be moderate in the Arabian Gulf and slight to moderate in Oman.
为什么这不起作用?尝试了很久
答案1
Sed 不理解 \d 代表数字。为此,请使用 [0-9] 或更正确地使用 [[:digit:]]
sed -i 's/^[0-9]*\t//' yourfile
编辑:
- sed 并不普遍理解 \t。 POSIX 没有强制要求它。因此,请使用 shell 变量,或者使用受 ksh $'\t' 启发的构造插入转义 TAB
- Mac 上的就地编辑 -i 需要在其后跟随一个参数,尽管 GNU 在这里是宽容的。请注意,-i 不是 Posix 强制要求的。
sed -i"" -e $'s/^[[:digit:]]*\t//' input_file
TAB=$(echo x | tr x '\011')
# or $(printf '\t')
sed -i"" -e "s/^[[:digit:]]*$TAB//" input _file