我在 Linux 中有以下文本檔案,名為“matricole.testo”:
paolo rossi 1988
giovanna d'arco 1945
francesco totti 1988
francesco gabbani 1967
andrea presti 1957
franco taoli 1945
giuseppe verdi 1987
我的目標是在檔案的前 7 行中用空格替換所有以 '88' 結尾的單詞(不是整行),因此結果如下(我認為):
paolo rossi
giovanna d'arco 1945
francesco totti
francesco gabbani 1967
andrea presti 1957
franco taoli 1945
giuseppe verdi 1987
為了達到這個結果,我嘗試了 command sed -e '1,7 s/\<.*88\>//g',但它用空格替換了整行;我怎樣才能按預期更改單詞?
請注意,我應該專門使用 sed 命令。
uj5u.com熱心網友回復:
只洗掉要洗掉的部分。
sed -e '1,7s/[0-9]*88$//' file
僅當您期望每行有多個匹配項時,該/g標志才有意義,根據定義,當您將搜索錨定到行尾時,您不能期望這種情況。每一行只有一個端點。(另一端稱為“開始”,而是匹配。)^
可以添加用空格替換匹配項,但按照現在定義的方式,它將在最終數字序列之前留下空格。
如果不明顯,“匹配任何內容”通配符.*匹配最長的最左邊可能的字串。如果您不希望這樣,則必須以*一種或另一種方式限制在重復運算子之前放置的內容。
如果您想替換所有以 結尾的單詞88并且您的sed方言理解\>為單詞右側的單詞邊界,請嘗試
sed -e '1,7s/[^ ]*88\>//g' file
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503779.html
