分页: 1 / 1

关于awk的疑问

发表于 : 2017-02-14 9:52
frostfall
目录下有几个文件,我想用awk输出第二个到第四个的名字
echo `ls` | awk '{print $2,$4}'
只输出第二个和第四个
echo `ls` | awk '{print $2-$4}'
输出0,什么意思?(第一个问题)
怎么解决呢?正确写法是什么?(第二个问题)
然后想到了循环来输出
echo `ls`| awk 'BEGIN{for(count=2;count<6;count++)print $count}'
输出4个空行
换种写法
echo `ls` | awk 'BEGIN{count=2;while(count<6){print $count;count ++;}}'
还是4个空行
怎么会这样?(第三个问题)

Re: 关于awk的疑问

发表于 : 2017-02-14 10:09
susbarbatus
问题一:没有这种语法,- 被理解成减号了,非数字的字符串被强制转化为0相减,得0。
问题二:循环,或者改用 cut 好了,cut 支持这样的语法

代码: 全选

$ echo `ls` | cut -d ' ' -f 2-4
问题三:去掉BEGIN,BEGIN是在 awk 读输入数据前执行的,读不到数据就是空行了。

Re: 关于awk的疑问

发表于 : 2017-02-14 10:13
frostfall
susbarbatus 写了:问题一:没有这种语法,- 被理解成减号了,非数字的字符串被强制转化为0相减,得0。
问题二:循环,或者改用 cut 好了,cut 支持这样的语法

代码: 全选

$ echo `ls` | cut -d ' ' -f 2-4
问题三:去掉BEGIN,BEGIN是在 awk 读输入数据前执行的,读不到数据就是空行了。
嗯,明白了,问题解决,多谢