剪切并比较文件中的字符串

剪切并比较文件中的字符串

我的文件包含以下几行:

3 5 asd/sdf/rdc fgd/ghw/rtt
4 7 axd/sdf/rdc axd/ghw/ert
8 2 drf/sdf/uhg fgd/ghw/gcd

我只想比较第 3 列和第 4 列中的名字并打印是否匹配 - 结果应该是:

3 5 asd/sdf/rdc fgd/ghw/rtt diff
4 7 axd/sdf/rdc axd/ghw/ert equal
8 2 drf/sdf/uhg fgd/ghw/gcd diff

答案1

使用awk

awk '{ split($3,a,"/"); split($4,b,"/"); $(NF+1) = a[1] == b[1] ? "equal" : "diff" }; 1' file

这会在斜杠上分割第三个和第四个字段,然后根据分割字符串的第一个元素是否相同或不同添加一个新字段。

1末尾的尾随导致修改的记录被输出。

答案2

您可以使用标准来做到这一点sed

sed 's_$_ diff_;s_\( [^/]*/\)\(.*\1.*\)diff_\1\2equal_'
  • 悲观地,我们总是diff首先添加s_$_ diff_
  • 如果从空格到下一个斜杠的序列在该行后面重复 ( ) ,那么我们用s替换diffequal[^/]*/\1

相关内容