我有以下行一定的模式後刪除在一列中的一切
ABC-Dup2 XUAS BSNMM
CVD nbvn nbmsb
SVDB-Dup4 NBV KJHA
TTS-Dup7 MNMN NBA
我想從第一欄只刪除-Dup並保留列的其餘部分,使得我有
ABC XUAS BSNMM
CVD nbvn nbmsb
SVDB NBV KJHA
TTS MNMN NBA
我正在嘗試sed's/-Dup。* // 1',但它也刪除了該行的其餘列。
我有以下行一定的模式後刪除在一列中的一切
ABC-Dup2 XUAS BSNMM
CVD nbvn nbmsb
SVDB-Dup4 NBV KJHA
TTS-Dup7 MNMN NBA
我想從第一欄只刪除-Dup並保留列的其餘部分,使得我有
ABC XUAS BSNMM
CVD nbvn nbmsb
SVDB NBV KJHA
TTS MNMN NBA
我正在嘗試sed's/-Dup。* // 1',但它也刪除了該行的其餘列。
如果圖案-Dup後跟一個數字,那麼你可以嘗試像
sed 's/-Dup[0-9]*//1'
如果更改了.*
到[^[:blank:]]*
你將不再有這個問題,但你仍然有sed的從任何地方去除-Dup
就行了,不只是第一列的問題。只需使用AWK:
awk '{sub(/-Dup.*/,"",$1)}1' file
注意怎麼說僅在第一列上工作(場):
$ cat file
ABC-Dup2 XUAS BSNMM
CVD nbvn-Dup7 nbmsb
SVDB-Dup4 NBV KJHA
TTS-Dup7 MNMN NBA
$ awk '{sub(/-Dup.*/,"",$1)}1' file
ABC XUAS BSNMM
CVD nbvn-Dup7 nbmsb
SVDB NBV KJHA
TTS MNMN NBA
sed 's/\(^[^ ]*\)-Dup[0-9]*/\1/'
一個sed
解決方案需要合併字段分隔符以將目標定義爲僅第一列。 GNU sed
:
$ sed -r 's/^(\S*)-Dup\S*/\1/' file
ABC XUAS BSNMM
CVD nbvn nbmsb
SVDB NBV KJHA
TTS MNMN NBA
嘗試如果第二行輸入是「CVD nbvn-Dup7 nbmsb」。最後的'1'是第一次出現正則表達式,它不是字段號。 –
我知道,來自OP的測試樣本沒有提及-Dup模式可能在第一列以外的任何地方,儘管 – Jawad
不,但他確實在第一列以好的,大的大寫字母說「FIRST COLUMN ONLY」,所以恕我直言,這是一個非常有力的提示。 '1'是多餘的,順便說一句,這是默認行爲。 –