[英]Using sed and awk to edit lines in a file
我有一些主機名的文件,這些主機名由空格和一個位置分隔。
host1 C1U5
host2 C11U55
host15 C5U10
我必須編輯主機文件。 我已經寫了sed / awk行以刪除字符,但是我的sed行僅返回整行。 我需要刪除該行的Cxx部分。
awk '{print $2}' file | sed -e 's/([Cc][0-9].\\w+//g' | tee new new_file
輸出應該看起來像
host1 5
host2 55
host15 10
這將從第二個字段中刪除除最后一個數字以外的所有數字,您應該獲得所需的輸出。
awk '{ sub(/C[0-9]+\w/,"",$2); print $1,$2 }' f1
輸出:
host1 5
host2 55
host15 10
awk解決方案:
$ awk '{sub(/C[0-9]+[^0-9]+/,"",$2)}1' file
host1 5
host2 55
host15 10
正則表達式說明:
C # C
[0-9]+ # followed by 1 or more digits
[^0-9]+ # followed by 1 or more non-digits
sed解決方案:您可以使用相同的正則表達式
$ sed -E 's/C[0-9]+[^0-9]+//' file
sed解決方案:
ubuntu$ sed -E 's/.*(^[a-zA-Z0-9]+[ ])([C][0-9]*[U])([0-9]+).*/\1 \3/g' mytext.txt
host1 5
host2 55
host15 10
問候!
跟隨awk可能也會對您有所幫助。
awk -F'C[0-9]+\\w' '{print $1,$2}' Input_file
輸出如下。
host1 5
host2 55
host15 10
awk '{sub(/C.*U/,"")}1' file
host1 5
host2 55
host15 10
怎么了?
sub刪除兩個正斜杠之間的所有內容。
從C和。=任何值的單個字符
* =零個或多個U字符。
,“” =這里sub刪除正斜杠之間的內容。
最后,1打印剩余的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.