Text-Processing
刪除以出現在另一個模式之後的任何地方的模式開始的整行
如何
---
在包含# Match
(任何行號中的第一個出現)的行之後刪除以出現在任何行號中的任何行?編輯:
#Match
與開頭的行之間的關係---
是,後者可以存在於之前或之後,#Match
但只有存在於之後才應將其刪除#Match
。–樣本輸入
hello this is sample --- sdafasdf adsafasf asfas fasf #Match this is sample adsafasf asfas dafasf ------ lots of fun ---- test adsfasf****
預期產出
hello this is sample --- sdafasdf adsafasf asfas fasf #Match this is sample adsafasf asfas dafasf adsfasf****
根據您的問題,我剛剛創建了這個 text.txt。如果您的文件內容不同,請告訴我們。
bash-4.1$ cat test.txt #Match ---- test hello #Match this is sample adsafasf asfas fasf #Match ------ funny ------ lots of fun #Match dafasf adsfasf bash-4.1$ awk '/#Match/ {flag=1} flag && /^---/ {flag=0;next} 1' test.txt #Match hello #Match this is sample adsafasf asfas fasf #Match ------ lots of fun #Match dafasf adsfasf
使用
sed
:sed -e '/#Match/ {n; /^---/d; }' infile
該
n
命令正在將下一行輸入讀入模式空間,如果該行僅在上一行與 匹配時以/^---/d
開頭,則刪除該行。---``#Match
回答修改後的問題:
sed -e '/#Match/,$ { /^---/d; }' infile