如何在Bash中用awk命令提取第一列为5的行的第二列内容?
正确提取"cat"的awk命令
你的原命令awk -F ',' '/5/ {print $2}' filename会匹配所有包含字符5的行,而文档里每一行的第一列都带有5,所以会输出所有动物。要只提取第一列恰好是5的行对应的第二列,有两种常用方法:
方法一:精确匹配第一列的数值/字符串
awk -F ',' '$1 == 5 {print $2}' filename这里
$1 == 5直接判断第一列的值等于5,不管是数值还是字符串形式,awk都会正确匹配。方法二:用正则限定第一列的精确内容
awk -F ',' '$1 ~ /^5$/ {print $2}' filename正则表达式
^5$表示第一列必须是仅包含单个5,^匹配第一列的开头,$匹配第一列的结尾,避免匹配到55、555这类包含多个5的内容。
两种方法都能精准提取出"cat",你可以根据习惯选择。
内容的提问来源于stack exchange,提问作者James Chin
相关产品推荐
相关产品推荐

