Linux grep搜索第一列中的数据
我有一个有两列的文本文件Linux grep搜索第一列中的数据,linux,ubuntu,grep,Linux,Ubuntu,Grep,我有一个有两列的文本文件 Product Cost Abc....def 10 Abc.def 20 ajsk,,lll 04 我想搜索产品,从“Abc”开始,以“def”结束,然后搜索我想添加成本的条目。 我使用了: grep "^Abc|def$" myfile 但它不起作用请使用awkcat myfile | awk'{print$1}'| grep query谢谢编辑。你想要这样的命令吗 grep "^Abc.*def *.*$" 如果可以使用awk,请尝试以下
Product Cost
Abc....def 10
Abc.def 20
ajsk,,lll 04
我想搜索产品,从“Abc”开始,以“def”结束,然后搜索我想添加成本的条目。
我使用了:
grep "^Abc|def$" myfile
但它不起作用请使用awk
cat myfile | awk'{print$1}'| grep query
谢谢编辑。你想要这样的命令吗
grep "^Abc.*def *.*$"
如果可以使用
awk
,请尝试以下操作:
text.txt
--------
Product Cost
Abc....def 10
Abc.def 20
ajsk,,lll 04
With only awk:
awk '$1 ~ /^Abc.*def$/ { SUM += $2 } END { print SUM } ' test.txt
Result: 30
With grep and awk:
grep "^Abc.*def.*\d*$" test.txt | awk '{SUM += $2} END {print SUM}'
Result: 30
说明:
读取每一行并用正则表达式(regex)匹配第一列awk
- 第一列必须以Abc开头,然后是任何内容(零次或多次),并以def结尾
- 如果找到这样的匹配项,则将第二列添加到SUM变量
- 读取所有行后,打印变量
Grep提取以Abc开头的每一行,后跟anything,后跟def,后跟anything,后跟一个数字(零次或多次)结束。这些管线通过管道输送至awk。Awk只是增加它接收到的每一行的总和。读取收到的所有行后,它将打印SUM变量。如果不想使用cat,还将显示行号:
awk '{print $1}' filename | grep -n keyword
你需要这样的代码吗
grep“^Abc.*efg$”
我正在搜索的数据在第一列,但是rowHum中有两列,您能否编辑您的问题并添加您的文件示例?如果您发现其中一个答案合适,请将其标记为已接受的答案,以结束您的问题?谢谢,@Aquarius24在一列上看到这个grep'ing的答案:awk'$1~/^Abc.*def/{print$2}'
这也将删除第二列。