我有這個example.text
> cat example.text
10.10.44.11 10.10.44.20 xa1-Y xa2-Y xb1-Y xb2-Y xc1-Y xc2-Y xd1-Y xd2-Y
我有這個命令:
srxa_host_list=$(echo example.text | awk '{print $3}' | sed 's/-.*//')
輸出:
echo $srxa_host_list
xa1
我需要什么:在“xa1”之前附加sr文本而不創建新的代碼行。
echo $srxa_host_list
srxa1
uj5u.com熱心網友回復:
第一種解決方案:使用您顯示的示例,請嘗試以下awk程式。我們可以用一個awk程式來完成所有這些。
awk -F'[ -]' '{print "sr"$3}' Input_file
解釋:簡單的解釋是,將欄位分隔符設定為空格和-所有行。在主程式中列印sr字串后跟當前行的第三個欄位,如圖所示的輸出。
第二種解決方案:使用sub的方法awk嘗試以下程式。
awk '{sub(/-.*/,"");print "sr"$3}' Input_file
說明:使用sub函式從第一次出現-直到最后一行替換為 NULL,然后列印 str 字串,后跟第三個欄位。
第三種解決方案:使用sedwith-E(啟用 ERE)選項請嘗試以下程式。
sed -E 's/^[^ ]* [^ ]* ([^-]*)-.*/sr\1/' Input_file
說明:使用sed'-E選項啟用 ERE(擴展正則運算式)。然后在主程式中從開始匹配,^[^ ]* [^ ]* 然后是一個捕獲組,其中匹配之前的所有內容,-然后-.*用第一個捕獲組替換它sr。
uj5u.com熱心網友回復:
使用sed
$ srxa_host_list="sr$(sed 's/[^-]* \([^-]*\).*/\1/' example.text)"
$ echo "$srxa_host_list"
srxa1
uj5u.com熱心網友回復:
如果您需要保留默認欄位分隔符的第三個欄位的值,您還可以拆分-并將第一部分附加到sr
awk '{split($3, a, "-");print "sr"a[1]}' example.text
輸出
srxa1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/467894.html
