Sed +正規表現の不一致と発生を\ d [duplicate]に置き換えます。

Sed +正規表現の不一致と発生を\ d [duplicate]に置き換えます。

以下を使用して、行の先頭から数字を削除しようとしています。

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はこれを義務付けていません。したがって、シェル変数を使用するか、ksh $ '\ t'からインスピレーションを得た設定を使用して、エスケープされたTABを挿入します。
  • Macでは、内部編集には引数の後に-iが続きますが、GNUはここで許可されています。 Posixでは、-iは必須ではありません。
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

関連情報