特定の正規表現をbashと一致させることはできません

特定の正規表現をbashと一致させることはできません

txt次の内容を含むファイルがあります。

Adedunmola Okikiola Adewole        512.035
215−39                    ^M
Ademir Cleto de Oliveira                 055.735
445−13                    ^M
Adilson Wagner Gandu                   559.995
780−28                    ^M

スクリプトを実行すると、

 #!/usr/bin/bash

 file="$@"

 while IFS= read -r cmd; do
     printf '%s\n' "$cmd"
 done < "$file"
./readline.sh list.txt

私が得る出力は次の形式です。

Yves Levi Paixao Lapa                   022.485 165"24
Yvin Miguel Juanico Carvalho         623.200 765"20
Yzis Silva Lima Santos                   372.341 215"39
Zilmara de Nazare Lucas Pimentel   282.147 230"44

ただし、grepでは次のパターンを使用することはできません。

./readline.sh list.txt | grep "230\"44"

クラスのコードです。この出力例では、少なくとも次の行を提供する必要があると予想しました。

Zilmara de Nazare Lucas Pimentel   282.147 230"44

私は何が間違っていましたか?

編集する: 印刷: ここに画像の説明を入力してください。

txtファイルリンク: https://drive.google.com/file/d/1azr_GSB2rBHd9dPzx43vrRdqkxkWb60G/view?usp=sharing

編集2:

utf-8出力がvimまたはemacsが元々表示するのと同じになるように、ファイルエンコーディングを変更します。ただし、たとえば「230-44」を正常にgrepすることはできません。

答え1

問題は私が-grepを使用していて、テキストが実際に別の文字であることです(スタックオーバーフローに貼り付けると変換されます)。

ここに画像の説明を入力してください。

答え2

grepとsedを使ってみると、うまく機能します。

./readline.sh list.txt |grep '230\"44'

output: Zilmara de Nazare Lucas Pimentel   282.147 230"44


  ./readline.sh list.txt |sed -n '/230\"44/p'

output: Zilmara de Nazare Lucas Pimentel   282.147 230"44

関連情報