【问题标题】:How do I just grep a column in my ksh script?如何在我的 ksh 脚本中 grep 列?
【发布时间】:2013-03-25 20:14:08
【问题描述】:

以下是我的代码:

#!/bin/ksh -p
NAME=$1
echo $NAME likes to drink:
grep $NAME ~/practice/database/likes
echo total number of beers $NAME likes to drink:
grep $NAME ~/practice/database/likes | wc -l

以下是我的输出:

dave likes to drink:
dave,coors
dave,bud
total number of beers dave likes to drink:
       2

如何只输出“coors”和“bud”?

【问题讨论】:

  • 这和vi有什么关系?
  • 因为这个脚本在vi里
  • 从外观上看是在 ksh 中。
  • 我的错,它是一个 kornshell 脚本,我只是认为 vi 脚本是正确的术语,因为它是用 vi 编写的......我很抱歉我对此很陌生......我只是一个学者

标签: shell unix ksh


【解决方案1】:

你可以试试这样的:

grep $NAME ~/practice/database/likes | awk -F, '{ print $2 }'

grep $NAME ~/practice/database/likes | cut -d , -f 2

man awk

man cut

【讨论】:

  • 谢谢。第二个声明是我正在寻找的原始声明...我会投票给你,但还没有 15 名声望...刚开始使用 UNIX 和这个帐户...我只是一个学者
【解决方案2】:

如果你使用sed,那么你只需要一个程序:

sed 's/'$NAME',//'  ~/practice/database/likes

或者您可以使用awk,但不要使用grep,因为awk 也可以使用正则表达式:

awk -F, '/'$NAME'/{ print $2 }' ~/practice/database/likes

【讨论】:

  • 我还没有 15 声望,所以我不能投票给你。第二个说法奏效了。第一个没用。感谢您的帮助。
  • @JeffOrris:当你尝试第一个语句时究竟发生了什么?
猜你喜欢
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多