私はawkでこれと同等のことをしたいと思います(コマンドラインの各行について)。
items = split(',')
if items[2] >= 10:
return items[0], items[1], 7
if 4 < items[2] < 10:
return items[0], items[1], 2
return items[0], items[1], 1
ファイルはcsv形式で、3つのフィールドがあります。
答え1
次のテキストをxxx.awkのように保存します。
#!/usr/bin/awk -f
BEGIN {
FS="," ;
}{
if ( $3 >= 10 ) {
print $1" "$2" "7 ;
} else if ( 4 < $3 && $3 < 10 ) {
print $1" "$2" "2 ;
} else {
print $1" "$2" "1 ;
}
}
次に実行します。
./xxx.awk yourCSVfile
実行する前に、「chmod +x xxx.awk」コマンドラインを実行する必要があります。
答え2
- 分割構文は次のとおりです(配列の文字列分割
split(i,items,",")
、区切り)i
items
,
- インデックスは1から始まります。
a < b < c
awkは設定をサポートしていません- 接続は以下を介して行われます。
a b
あなたはほしいだけです
split(i,items,",")
if (items[3] >= 10)
return items[1] items[2] 7 ;
if (4 < items[3] ) ## if item[2]>=10, code isn't reached
return items[1] items[2] 2 ;
return items[1] items[2] 1
提供(入力文字列=>結果)
11,11,11 => 11117
5,5,5 => 552
1,1,1 => 111