簡體   English   中英

使用sed和awk編輯文件中的行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM