Bash

無法將特定的正則表達式與 bash 匹配

  • February 24, 2022

我有一個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 最初顯示的內容。但是,例如,我仍然無法成功 grep “230-44”。

問題是我-在 grep 上使用,而文本實際上是其他字元(當我將它粘貼到堆棧溢出時它被轉換)

在此處輸入圖像描述

嘗試使用 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

引用自:https://unix.stackexchange.com/questions/691521