比賽之後和下一場比賽之前的 sed 行

比賽之後和下一場比賽之前的 sed 行

如何取得配對單字之後直到下一個不同符合單字的所有行?

例如,我的輸入如下所示。

1
2
3

5
6

我需要sed15在我的輸出中我需要包括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

相關內容