当前位置: 技术问答>linux和unix
awk里面的for循环的疑问
来源: 互联网 发布时间:2017-04-01
本文导语: 有awk脚本如下: #!/bin/awk -f #Filename : arraytest.awk # prints out an array BEGIN { record = "123#456#78"; split(record,myarray,"#") } END { for (i in myarray) print myarray[i] } 测试时使用: array_test.awk /dev/null 发现输出正常结果: 123...
有awk脚本如下:
#!/bin/awk -f
#Filename : arraytest.awk
# prints out an array
BEGIN {
record = "123#456#78";
split(record,myarray,"#")
}
END {
for (i in myarray)
print myarray[i]
}
测试时使用: array_test.awk /dev/null
发现输出正常结果:
123
456
78
但是,如果去掉上面的END,却是没有输出的。即:
BEGIN {
record = "123#456#78";
split(record,myarray,"#")
}
{
for (i in myarray)
print myarray[i]
}
另外,如果语句写完后,不在最后面加入换行,执行脚本时会一直出错。
还请各位高手,大侠不吝赐教 !!
#!/bin/awk -f
#Filename : arraytest.awk
# prints out an array
BEGIN {
record = "123#456#78";
split(record,myarray,"#")
}
END {
for (i in myarray)
print myarray[i]
}
测试时使用: array_test.awk /dev/null
发现输出正常结果:
123
456
78
但是,如果去掉上面的END,却是没有输出的。即:
BEGIN {
record = "123#456#78";
split(record,myarray,"#")
}
{
for (i in myarray)
print myarray[i]
}
另外,如果语句写完后,不在最后面加入换行,执行脚本时会一直出错。
还请各位高手,大侠不吝赐教 !!
|
1. 但是,如果去掉上面的END,却是没有输出的。即:
awk按行处理输入
array_test.awk /dev/null
没有输入行,所以
{
for (i in myarray)
print myarray[i]
}
是不会执行的!
2. 另外,如果语句写完后,不在最后面加入换行,执行脚本时会一直出错。
Linux下文本文件最好的最后加上换行符。否则有些软件会出错
比如gcc编译没有结尾换行符的.c文件会给个警告!
其中的原因我也不是特别清楚,记着加个换行符就好了,如果用vi/vim编译的话,会自动加一个换行符的。
awk按行处理输入
array_test.awk /dev/null
没有输入行,所以
{
for (i in myarray)
print myarray[i]
}
是不会执行的!
2. 另外,如果语句写完后,不在最后面加入换行,执行脚本时会一直出错。
Linux下文本文件最好的最后加上换行符。否则有些软件会出错
比如gcc编译没有结尾换行符的.c文件会给个警告!
其中的原因我也不是特别清楚,记着加个换行符就好了,如果用vi/vim编译的话,会自动加一个换行符的。
|
这回答也算好?
awk 中 END的作用,楼主自己好好查查,这是基础
换行符什么的,从来没听过有这种问题。
awk 中 END的作用,楼主自己好好查查,这是基础
换行符什么的,从来没听过有这种问题。