for 文の形式:
for(変数の初期化; 変数に関する条件式; 変数のインクリメントあるいはデクリメント){
処理
}
scpt14_1.awk
1 2 3 4 5 6 7 8 9 | #!/usr/local/bin/gawk -f
# scpt14_1.awk
BEGIN{
for(i = 1; i <= 100; i++){
sum += i
}
print "1 から 10 までの合計は " sum
}
|
scpt14_1.awk の実行結果は:
[cactus:~/code_awk/tuts]% ./scpt14_1.awk
1 から 10 までの合計は 5050
scpt14_2.awk
1 2 3 4 5 6 7 8 | #!/usr/local/bin/gawk -f
# scpt14_2.awk
BEGIN{
for(i = 1; i <= 10; i += 2){
print "i = " i
}
}
|
scpt14_2.awk の実行結果は:
[cactus:~/code_awk/tuts]% ./scpt14_2.awk
i = 1
i = 3
i = 5
i = 7
i = 9
scpt14_3.awk
1 2 3 4 5 6 7 8 | #!/usr/local/bin/gawk -f
# scpt14_3.awk
BEGIN{
for(i = 10; i >= 1; i--){
print "i = " i
}
}
|
scpt14_3.awk の実行結果は:
[cactus:~/code_awk/tuts]% ./scpt14_3.awk
i = 10
i = 9
i = 8
i = 7
i = 6
i = 5
i = 4
i = 3
i = 2
i = 1
data14_4.txt
不要な部分
不要な部分
不要な部分
不要な部分
不要な部分
■ ■ これも不要
本文 1
本文 2
本文 3
本文 4
本文 5
scpt14_4.awk
#!/usr/local/bin/gawk -f
# scpt14_4.awk
FNR == 1{
for(i = 1; i < 10; i++){
if($0 ~/^■ ■ /){
getline # 冒頭に ■ ■ がきたので次の行を読み
break # ループを抜ける
}
getline
}
}
{
print
}
scpt14_4.awk の実行結果は:
[cactus:~/code_awk/tuts]% ./scpt14_4.awk data14_4.txt
本文 1
本文 2
本文 3
本文 4
本文 5
次のような文字列と数が入り混じったテキスト scpt14_5.txt がある. ここから純粋な数, 即ち数字の連続したもの以外を引用符 [“] で括り, コンマ区切りで出力する
data14_5.txt
tomato トマト 100 300 リンゴ 57 林
たまご 909 国会 350 189 雪 43 財布
自動車 56.7 78.9 先生 C言語
市場 apple google 23.2 D言語
scpt14_5.awk
#!/usr/local/bin/gawk -f
# scpt14_5.awk
{
s = ""
i = 0
while(i < NF){
i++
if($i ~ /^[0-9]+$/){
continue
}
s = s "\"" $i "\","
}
print substr( s, 1, length(s) - 1 ) # 最後のコンマを削除して出力
}
scpt14_5.awk の実行結果は:
[cactus:~/code_awk/tuts]% ./scpt14_5.awk data14_5.txt
"tomato","トマト","リンゴ","林"
"たまご","国会","雪","財布"
"自動車","56.7","78.9","先生","C言語"
"市場","apple","google","23.2","D言語"