[英]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.