![](/img/trans.png)
[英]How to replace string after colon using sed, awk, regex, yq etc and can run using shell script
[英]Using sed, awk, etc. to separate after middle dot characters
我可以用你的幫助; 我保證我努力尋找答案,但沒有運氣。
我想在每次出現“·”(中間點)字符(基本上是音節)之間分隔文本。
echo con·grat·u·late | sed -e 's/·.*$/·/1'
上面的代碼輸出:
CON·
這是我想要的第一部分,但最終我想要一個輸出:
CON·
GRAT·
U·
晚的
這將涉及獲取“·”的第1至第2次和第2次至第3次之間的字符
如果有人能指引我朝着正確的方向前進,我將非常感激,並且我會自己完成其余的工作。
編輯道歉,我錯誤地顯示了我想要的輸出。 但是,您的解決方案非常有用。
由於將所有內容保存為單行非常重要,如何在第一個點和第二個點之間輸出文本,以輸出:
grat·
我在UTF-8,Jonathan這樣做
再一次,抱歉找錯了。
在GNU sed中,您可以這樣做:
echo con·grat·u·late | sed -e 's/·/&\n/g'
&
代表匹配的模式,在這個例子中是·
。 不幸的是,這在BSD sed中不起作用。
對於更便攜的解決方案,我推薦這個AWK,它應該適用於GNU和BSD系統:
echo con·grat·u·late | awk '{ gsub("·", "&\n") } 1'
由於您希望在點之間運行字符,因此您可以像這樣嘗試sed
echo 'con.grat.u.late'|sed 's/\.*\./&\n/g'|sed -n 2p|tr -d '.'
在第1和第2點之間打印字符組
echo 'con.grat.u.late'|sed 's/\.*\./&\n/g'|sed -n 2p|tr -d '.'
結果
grat
注意:我使用2p
在第一個點和第二個點之間打印字符
打印第2點和第3點之間的字符組
echo 'con.grat.u.late'|sed 's/\.*\./&\n/g'|sed -n 3p|tr -d '.'
結果
u
注意:我使用3p
在第二個點和第三個點之間打印字符
你也可以使用sed完成整個過程,但是我使用tr
命令,這樣你就可以輕松地遵循了。 tr
命令在打印前刪除點。 如果你想要點,那么排除|tr -d '.'
從命令行。
您還可以打印一組字符
echo 'con.grat.u.late'|sed 's/\.*\./&\n/g'|sed -n 1,3p|tr -d '.'
結果
con
grat
u
您可以使用簡單的awk
將這些單詞分開:
$ echo 'con.grat.u.late' | awk -F. '{print $1}'
con
$ echo 'con.grat.u.late' | awk -F. '{print $2}'
grat
$ echo 'con.grat.u.late' | awk -F. '{print $3}'
u
$ echo 'con.grat.u.late' | awk -F. '{print $4}'
late
$ echo 'con.grat.u.late' | awk -F. '{for(i=1;i<=NF;i++){print $i}}'
con
grat
u
late
-F.
暗示使用.
作為字段分隔符
只是
echo con·grat·u·late | sed -e 's/·/·\n/g'
替換每·
有·
跟着一個換行符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.