簡體   English   中英

Bash腳本用於回顯文件中的某些行

[英]Bash script to echo certain lines from file

我有一個大文件,看起來像這樣:

line1
line2
line3;

line5
line6;
line7

line9
line10;

基本上,它是一堆行,其中一些以分號結尾。 這些行后面可能有或沒有空行用分號。

我想用這個文件做一些看似相對簡單的事情,但是我還沒有辦法做到這一點。 我想調用一個bash腳本來識別那些以分號結尾的行,並在每個行之后回顯第一個非空行。

因此,在上面的示例中,輸出將是:

line5
line7

我嘗試了幾種不同的方法,包括循環遍歷整個文件,使用正則表達式檢查當前行是否以分號結束,並切​​換布爾變量以確定是否應回顯下一個非空行。 但我沒有運氣。

似乎應該有更簡單的方法,也許使用grep,但我似乎無法想出它。 關於實現這個的好方法的任何想法?

Awk非常適合這類事情。

$ cat data
line1
line2
line3;

line5
line6;
line7

line9
line10;
$ awk '/;$/{print_next=1; next} (/^[^ ].*$/ && print_next) {print; print_next=0}' < data
line5
line7

試試這個命令:

sed '/^$/d' file | sed -n '/;/{n;p}'
  • 刪除空行
  • 印刷線吼叫;

如果你想要“grep”唯一的解決方案

grep -v "^$" file | grep -A1 ";" | grep -v ";\|--"

嘗試“sed -e'/; $ / d'test.txt”命令,它的工作原理。

 # cat test.txt 
 line1
 line2
 line3;

 line5
 line6;
 line7

 line9
 line10;


 # sed -e '/;$/d' test.txt > lines.txt

 # cat lines.txt 
 line1
 line2

 line5
 line7

 line9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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