我有一個日誌文件,我用awk提取所需的列線的一部分。我的命令是僅獲得使用AWK
awk '{ print $2" "$5" " $6}' log.txt
的$ 5列包含服務器名稱和格式可以像@:server1的@:@:@:,服務器2 @:@:@:@:@:,@:@:用的Server3沒有固定數量的@:符號。
如何修改我的發言讓我刪除所有的「@:」從列5只得到服務器的名字嗎?
我有一個日誌文件,我用awk提取所需的列線的一部分。我的命令是僅獲得使用AWK
awk '{ print $2" "$5" " $6}' log.txt
的$ 5列包含服務器名稱和格式可以像@:server1的@:@:@:,服務器2 @:@:@:@:@:,@:@:用的Server3沒有固定數量的@:符號。
如何修改我的發言讓我刪除所有的「@:」從列5只得到服務器的名字嗎?
可以使用gensub功能。
awk '{ print $2, gensub(/@:/, "", "g", $5), $6}' log.txt
編輯:請參閱下面的glenn jackman的評論,以瞭解可能的可移植性影響。
是'gensub()'只在GAWK? 'GSUB(/ @:/, 「」,$ 5)'是 「便攜式」 – 2009-10-15 17:56:24
哎喲,你可能是正確的。 – 2009-10-15 18:55:21
我建議是這樣的:
awk '{ sub("^(@:)*","",$5); sub("(@:)*$","",$5); print $2" "$5" "$6 }'
注意,你也可以寫print $2,$5,$6
- 的「」由輸出域分隔符,默認情況下空格代替。
(編輯刪除「@:」從字符串的結尾一樣)
你在另一個說,在一個地方「$ 5列」和「列3」 - 有我們誤解,你需要執行代換? – Cascabel 2009-10-15 14:59:09
是一個錯字。固定它 – randomThought 2009-10-15 15:00:18