2016-04-14 60 views
0

我想更換一個值的值(比方說,「25」與「Z」的所有出現),這樣sed命令會做:的sed:更換單個列

sed 's/25/Z/g' 

但只有在文件的第一列(所以其他列中的任何「25」都不應該被替換)。這可能與sed,還是我需要別的東西?

回答

1

我建議使用awk。具有該列由空格隔開的命令是簡單的:

awk '{sub(/25/, "Z", $1)}1' input.file 

如果25可以在第一列中多次出現,並要替換所有的人都使用gsub代替sub

+0

這似乎是工作,TNX! 「}」在「}」之後做了什麼? – Abdel

+1

@Abdel awk程序由'CONDITION {ACTIONS}'形式的一個或多個表達式組成。條件和動作都是可選的。如果未指定條件,則操作將應用於所有輸入記錄。如果沒有指定操作,則默認操作是「打印」記錄。 '1'利用了這一點。這是一個總是評估爲「真」的條件。由於沒有指定任何操作,它只會打印所有行。這與編寫'{print}'相同但更短。 – hek2mgl

+0

這會將'1257'變成'1Z7'並壓縮行中的所有空白。這是可取的嗎? –

0

檢查:

echo "25 25 25 25 25" |perl -lane '$F[1]=~s/25/Z/g;print "@F"' 
25 Z 25 25 25