2017-04-11 14 views
2

各セルのサイズと長さを比較し、その長さによってコンテンツを変更したいと考えています。Unix Scriptingでの各セルのサイズの比較

現在のテーブルがフォーマット

AB 
CD 
AB 
AB 
CD 
155668/01 
AB 
1233/10 

である私は、DEに「2」以上の長さを有する細胞を交換したいです。

出力

AB 
CD 
AB 
AB 
CD 
DE 
AB 
DE 

私はそれは構文エラーを言う

awk -F "," '{ if($(#1) > "2") {print "DE"} else {print $1 }}' 

を試してみました。 をそのまま使用すると、出力が同じである場合は$(#となります。

sed '/^..$/!s/.*/DE/' file 

awkでは、あなたが言うことができる:

答えて

1

これを試してみてください -

$ awk '{print (length($1)>2?"DE":$1)}' f 
AB 
CD 
AB 
AB 
CD 
DE 
AB 
DE 
+0

これは非常にうまくいっています。ありがとうございました。 –

2

最も簡単な方法は、sedを使用することですどちらの場合も

awk '!/^..$/ { $0 = "DE" } 1' file 

を、考え方は同じです:ラインはで構成されていない場合正確に2文字で、行全体をDEに置き換えます。 sedの場合、全体の行は.*であり、awkの場合は$0です。

+0

。ありがとうございました。コードを説明してください。 –

0

慣用的な方法は次のようになります。どちらも、非常によく働いている

awk 'length($1) > 2 { $1 = "DE" } 1' 
+0

あなたは '$ 1'に割り当てることを意味しましたか? –

+0

@MichaelVehrs:ありがとう。次回は編集してみましょう:-) – Thor

関連する問題