
我想提取與以下邏輯運算相符的行:
"AB+CD" AND ("nonAB+nonCD" OR "nonAB+CD").
這意味著我想要以下內容:
AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD
這意味著我正在尋找帶有“AB+CD”的行一或者兩個都(“nonAB+nonCD”或“nonAB+CD”)。
請注意,+ 是字串的一部分。我想將其視為字串(字元)而不是算術運算。
我所做的是使用管道來執行 AND。並使用\|對於手術室。所以我的命令是:
grep ',AB+CD' test.txt | grep ',nonAB+nonCD\|,nonAB+CD'
第一個|
是用於管道。第二個是 grep 的邏輯或,如下圖所示參考這給出了 grep 的邏輯或的例子:
grep 'pattern1\|pattern2' filename
在終端顏色中顯示的結果(找到)指令的第二部分。第一部分(在管道|
未在彩色結果中突出顯示之前。我的問題:
1)我的命令正確嗎?
2)如何為完整的命令結果著色?
答案1
使用-P
選項(PCRE):
grep -P 'AB\+CD,(?:nonAB\+nonCD|nonAB\+CD)' file.txt
輸出:
AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD