目录下有几个文件,我想用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个空行
怎么会这样?(第三个问题)
关于awk的疑问
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
Re: 关于awk的疑问
问题一:没有这种语法,- 被理解成减号了,非数字的字符串被强制转化为0相减,得0。
问题二:循环,或者改用 cut 好了,cut 支持这样的语法
问题三:去掉BEGIN,BEGIN是在 awk 读输入数据前执行的,读不到数据就是空行了。
问题二:循环,或者改用 cut 好了,cut 支持这样的语法
代码: 全选
$ echo `ls` | cut -d ' ' -f 2-4
沉迷将棋中……
-
- 帖子: 8
- 注册时间: 2016-10-31 15:31
- 系统: 16.10
Re: 关于awk的疑问
嗯,明白了,问题解决,多谢susbarbatus 写了:问题一:没有这种语法,- 被理解成减号了,非数字的字符串被强制转化为0相减,得0。
问题二:循环,或者改用 cut 好了,cut 支持这样的语法问题三:去掉BEGIN,BEGIN是在 awk 读输入数据前执行的,读不到数据就是空行了。代码: 全选
$ echo `ls` | cut -d ' ' -f 2-4