我還有另一個bash
問題。如果我有一個文件一樣......Bash - 逐行打印句子
Today is sunny. I like the sun. It is awesome!
我想打印出每個字符,直到遇到一個?
,.
,或!
。這也可以是一個awk單線程?我想讓打印輸出看起來像。
Today is sunny.
I like the sun.
It is awesome!
我還有另一個bash
問題。如果我有一個文件一樣......Bash - 逐行打印句子
Today is sunny. I like the sun. It is awesome!
我想打印出每個字符,直到遇到一個?
,.
,或!
。這也可以是一個awk單線程?我想讓打印輸出看起來像。
Today is sunny.
I like the sun.
It is awesome!
你只需要指定記錄分隔符:
awk 'BEGIN {RS="[.!?] *"} {print}'
echo Today is sunny. I like the sun. It is awesome! | sed 's/[.!?] */&\n/g'
一些接近在AWK(不完全想需要的,但有趣的):
echo 'Today is sunny. I like the sun. It is awesome!'|awk '1' RS='[.,?]'
的規範awk的方式:
echo 'Today is sunny. I like the sun. It is awesome!'|gawk 'a=gensub(/(\.|!|\?) */, "\\1\n", "g"){print a}'
的解決方案使用sed
:
sed 's/\([\?\!\.]\)\s*/\1\n/g'
echo Today is sunny. I like the sun. It is awesome! | awk '{gsub(/([?,.!])/,"&\n");print}'
但這工作!儘管我仍然需要它來打印句子後的這段時間。有沒有辦法通過char來實現,就像char中的print char一樣,然後在發現(。,?或!)時做些什麼? – Tree55Topz
當然,但我不會使用它的awk。 –