簡體   English   中英

將regex與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM