【发布时间】:2015-01-06 19:29:32
【问题描述】:
我想只查找匹配行的第一个数字。我知道第一个数字只能是1 to 4
例如这个文件
2 Eggs
1 Bacon
5 Bread
grep -i eggs | grep ^[14]** or **grep -i eggs | grep ^#
不工作.... 但为什么不呢?
预期结果是数字2
【问题讨论】:
标签: shell command-line grep
我想只查找匹配行的第一个数字。我知道第一个数字只能是1 to 4
例如这个文件
2 Eggs
1 Bacon
5 Bread
grep -i eggs | grep ^[14]** or **grep -i eggs | grep ^#
不工作.... 但为什么不呢?
预期结果是数字2
【问题讨论】:
标签: shell command-line grep
我只会使用cut 命令:
grep -i eggs yourfile | cut -c1
【讨论】:
您可以使用awk
awk '/eggs/ {print $1}' file
2
它将搜索所有带有eggs 的行,然后打印第一列$1
【讨论】:
您希望 grep 的 -o 选项仅输出匹配的文本(不是整行),并且正则表达式 [1-4] 匹配从 1 到 4(而不是 @987654323 @ 匹配 1 或 4)
grep -o '^[1-4]'
要将您的 grep 管道包装成一个命令,如果您有 GNU grep,则可以使用它:
grep -ioP '^[1-4](?=\s+eggs)'
【讨论】: