繁体   English   中英

AWK 列匹配

[英]AWK Column match

我试图找到一个与 grep 匹配的列,但没有运气下面是我的数据集

A1|B1|C1
A11|B2|C111
A1|B23|C97
cat file|while IFS="|" read -r A B C
do
  x1=`egrep $A $file`. # here I want A1 should be matched to A1 but I am gettin A1/A11/A1 
done

我想将第一行第一列的 A1 与其他行的 A1 进行比较,它可以是第 2/30 等。所以我想比较列和行到列行。

您可以使用grepawk来做到这一点。 grep使用扩展的 REGEX( -E选项)将允许您使用字边界匹配\\b来区分"A1""A11" ,例如

grep -E '^A1\b' data

使用awk的字段分隔符 ( FS ) '|' 您只需保存第一条记录( FNR==1 )中的第一个字段( $1 ),然后匹配所有剩余记录的第一个字段,例如

awk -F'|' 'FNR==1{find=$1;print;next} $1==find' data

示例使用/输出

在上述两种情况下,使用名为data的文件中的data ,输出为:

A1|B1|C1
A1|B23|C97

目前尚不清楚您想对剩余的比较做什么,但如果您明确表示,我很乐意进行编辑并进一步提供帮助。 如果您想比较或操作每条记录中的其他字段, awk将是自然的选择。 发表评论或编辑您的问题以阐明"compare column and row to column row"含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM