我需要刪除,
和(
之間的多條線,包括圖案以及第一次出現時的兩條線。刪除殼中兩個圖案之間的線
例
Test ,
this
is the
deletion
part
(
done...
期望輸出
Test
done
我已經嘗試了以下使用sed來實現上述輸出,但它只是返回整個文件數據。
sed 's/,*(//' file
在此先感謝。
我需要刪除,
和(
之間的多條線,包括圖案以及第一次出現時的兩條線。刪除殼中兩個圖案之間的線
例
Test ,
this
is the
deletion
part
(
done...
期望輸出
Test
done
我已經嘗試了以下使用sed來實現上述輸出,但它只是返回整個文件數據。
sed 's/,*(//' file
在此先感謝。
awk
更適合在這裏:
awk '/,/{p=1; sub(/[ \t]*,.*/, ""); print} !p; /\(/{p=0}' file
Test
done
另外,您還可以使用perl
:
perl -i -0777 -pe 's/\h*,.*\(//s' file
或者這個表達式用否定字符類,不要求s
修改:
perl -i -0777 -pe 's/\h*,[^(]*\(//' file
'[\ s \ S]'nice':-)' –
其他選項是使用's'修飾符,如''s〜 (?s)。* \(~~'' – anubhava
perl更經常使用修飾符以外的正則表達式/...// s' –
這可能爲你工作(GNU SED):
sed -z 's/,[^(]*(//g' file
啜食整個文件到內存和全局替換,
和(
什麼也沒有之間的任何字符。
awk '{sub(/ ,|\.../,"")}NR==1;END{print}' file
Test
done
這不符合OP的要求 - 它應該從「,」中刪除,直到「(」(也可以稍微解釋一下它的工作原理!) – psmears
請解釋你的代碼(你打算工作的方式,而不是它的工作方式),它似乎與你描述的目標非常無關,這使得問題變得模糊不清。 – Yunnosch
@Yunnosch我提供了一個例子,說明我打算如何使用代碼:) –