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

관련 정보