Text-Processing
Sed + 正則表達式不匹配和替換發生
我正在嘗試使用以下命令刪除行首的數字:
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.
為什麼這不起作用?試了很久
Sed 不理解 \d 的數字。對於那個用途
$$ 0-9 $$或更準確地說$$ [:digit: $$]
sed -i 's/^[0-9]*\t//' yourfile
編輯:
- \t 沒有被 sed 普遍理解。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