![](/img/trans.png)
[英]How do I delete a matching line, the line above and the one below it, using sed?
[英]using regex with sed to delete the line just below the matching pattern
我必須刪除此文本中包含日期和頁碼的行。
我嘗試刪除包含發票,金額,儲物櫃數據的行正下方的行。 但是無法找出正確的正則表達式。
軸
發票金額櫃
489 849560.94 12
2014年8月,星期三第1 ##頁刪除
UB99
發票金額櫃
512 1204873.89 99
2014年2月,星期一第4 ##頁刪除
我在嘗試:
sed -i'/正則表達式/ {n; d;}'
還有其他方法可以做到嗎?
如果要刪除的行包含“頁面”,請嘗試通過匹配頁面來刪除該行,如下所示:
sed -i '/page/Id' file_name
這是一種使用awk
在模式匹配后刪除下一行的方法
cat file
Axis
Invoice Amount Locker
489 849560.94 12
Wednesday, August 2014 Page 1## to delete
UB99
Invoice Amount Locker
512 1204873.89 99
Monday, February 2014 Page 4## to delete
awk '/^Invoice/ {i=2} i--!=1' file
Axis
Invoice Amount Locker
Wednesday, August 2014 Page 1## to delete
UB99
Invoice Amount Locker
Monday, February 2014 Page 4## to delete
如果您想刪除第二跳以下:只需增加i
awk '/^Invoice/ {i=3} i--!=1' file
Axis
Invoice Amount Locker
489 849560.94 12
UB99
Invoice Amount Locker
512 1204873.89 99
這是另一種方式。 其存儲行號並刪除我們不想要的內容:
awk '/^Invoice/ {n=NR} !(n && NR==n+1)' file
Axis
Invoice Amount Locker
Wednesday, August 2014 Page 1## to delete
UB99
Invoice Amount Locker
Monday, February 2014 Page 4## to delete
awk '/^Invoice/ {n=NR} !(n && NR==n+2)' file
Axis
Invoice Amount Locker
489 849560.94 12
UB99
Invoice Amount Locker
512 1204873.89 99
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.