【问题标题】:How do I use awk to display all lines but with a criteria in the 2nd field? [closed]如何使用 awk 显示所有行,但在第二个字段中有一个条件? [关闭]
【发布时间】:2012-11-26 22:26:29
【问题描述】:

所以问题是:

使用 awk 显示文件中库存少于 100 件的所有行。数量是第二个字段。

我试过了

 awk '$2 < 100' inventory

但仅在第二个字段中显示小于 100 的行,这是要求我显示所有行,我不知道如何显示,有人可以帮助我吗?


草莓酱,300,4

覆盆子果酱,1216,7

蓝莓果酱,96,195

草莓果盘,49,621

覆盆子果盘,1937,624

蓝莓果盘,200,625

冷冻草莓,130,1941

草帽,16,2047

^库存文件内容

【问题讨论】:

  • 不,它不起作用
  • 呃。这到底是怎么做到的?
  • “显示所有少于 100 个项目的行”,其中项目数存储在第二个字段中...您的代码“仅显示少于 100 个的行在第二场“......不是吗?您显示所有行,或者您将所有数字小于 100 的行显示为第二个字段...您是什么意思?
  • 我被你的问题弄糊涂了,你是问有没有数量
  • 不确定?有 3 个字段,第二个字段应该显示库存中少于 100 的行,但只有 '$2 >= 100' 或 '$2

标签: linux bash shell unix


【解决方案1】:
awk -F, '$2<100' file

测试

kent$  cat test
Raspberry Jam,1216,7
Blueberry Jam,96,195
Strawberry Compote,49,621
Raspberry Compote,1937,624
Blueberry Compote,200,625
Frozen Strawberries,130,1941

kent$  awk -F, '$2<100' test
Blueberry Jam,96,195
Strawberry Compote,49,621

【讨论】:

  • ...这与您得到的“不起作用”的其他答案相同。
【解决方案2】:

应该这样做:

awk 'BEGIN{FS=OFS=","} $2 < 100 {print}' inventory

解释:

  • awk:调用 awk 命令
  • BEGIN{FS=OFS=","}':使用,作为输入和输出的分隔符​​,因为我还记得your other question的输入文件格式
  • $2 &lt; 100 {print}:只要条件$2 &lt; 100 为真,就打印整行。
  • inventory: 输入文件的名称。

输入:

Strawberry Jam,300,4
Raspberry Jam,1216,7
Blueberry Jam,96,195
Strawberry Compote,49,621
Raspberry Compote,1937,624
Blueberry Compote,200,625
Frozen Strawberries,130,1941
Straw Hats,16,2047

输出:

Blueberry Jam,96,195
Strawberry Compote,49,621
Straw Hats,16,2047

【讨论】:

  • 你怎么知道字段分隔符是逗号?
  • 不起作用仍然没有意义。
  • @ShinTakezou 他刚才问了这个问题:stackoverflow.com/questions/13573869/…
  • 啊好吧我担心我阅读问题内容的能力! :)
  • 对不起,这也不起作用,对不起,我不能提供更多帮助...我编辑了我的帖子并显示了库存的内容,但它就是不起作用!
【解决方案3】:

如果您只想打印带有awk 的所有行,那么:

awk '{print $0}'

如果要打印第二个字段少于 100 个字符的行:

$ cat inventory

1,2,3
1,12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,0

像这样:

`awk -F, '$2 < 100 {print $0}' inventory`

1,2,3

如果要根据第二个字段的值打印行:


$ awk -F, '$2<100' file

Blueberry Jam,96,195
Strawberry Compote,49,621
Straw Hats,16,2047

$ awk -F, '$2>100' file

Strawberry Jam,300,4
Raspberry Jam,1216,7
Raspberry Compote,1937,624
Blueberry Compote,200,625
Frozen Strawberries,130,1941

【讨论】:

  • 不幸的是,这不起作用。为什么要打印 $0,是否全部打印出来?
  • 不工作仍然没有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多