如何取得配對單字之後直到下一個不同符合單字的所有行?
例如,我的輸入如下所示。
1
2
3
5
6
我需要sed
從1到5在我的輸出中我需要包括1但我不想包括 *5* 和其餘的行。
如果我的文件不包含5,我需要將剩餘的行保留到最後。
筆記:我看到引用的連結看起來與我的問題重複,標題為:僅顯示 2 個匹配模式之間的文本但它沒有回答我的問題。那裡的答案沒有包括處理第二個匹配項不在文件中的方法。
答案1
sed '/1/,/5/!d;/5/d'
將返回從包含的行開始1
到包含該行的下一行5
(不包括該行)的行。如果5
包含 的行之後沒有包含 的行1
,則會從包含 的第一行列印1
到檔案末端。
請注意,它將列印所有相應的部分。
如果只有一個部分,或者您只對第一個部分感興趣,另一種方法可能是:
sed -n '/1/,$!d; /5/q; p'
這表示sed
在同一行上找到 5 後或在包含 的第一行後將停止讀取1
。