我创建了两个文件,通过解析其他文件并删除相关信息。其中一个文件的行如下所示:
Ahmed,Safdar:D433:181:20.40:30.00
Gonzales,Carlos:D433:7732:18.00:24.00
Thanhachammet,Chendrit:D500:5833:8.40:12.10
Bush,G:D500:8343:13.00:19.00
另一个:
343#2#8#011104
1958#2#9#011204
181##16#012404
773##4#012404
我想检查冒号分隔线的第3个字段是否与井号分隔线的第一个字段匹配。如果是这样,我想生成一个匹配的行列表。我有点坚持如何做到这一点。这就是我的尝试:t
temp=$(mktemp)
dept=$(cut -d: -f3 "$tempDept")
pay=$(cut -d# -f1 "$tempPay")
if echo "$dept" | grep -w "$pay"; then
cat "$dept" >> "$temp"
cat "$pay" >> "$temp"
fi
答案 0 :(得分:1)
使用awk
,您可以说:
awk -F'[:#]' 'FNR==NR {_[$1];next} $3 in _' pound_separated_file colon_separated_file
为了您的输入,它会产生:
Ahmed,Safdar:D433:181:20.40:30.00
答案 1 :(得分:1)
使用join
。
$ cat 1
Ahmed,Safdar:D433:181:20.40:30.00
Gonzales,Carlos:D433:7732:18.00:24.00
Thanhachammet,Chendrit:D500:5833:8.40:12.10
Bush,G:D500:8343:13.00:19.00
$ cat 2
343#2#8#011104
1958#2#9#011204
181##16#012404
773##4#012404
$ sort -t: -k3 1 > 1a
$ sed 's/#/:/g' 2 | sort -t: -k 1 > 2a
$ cat 1a
Ahmed,Safdar:D433:181:20.40:30.00
Thanhachammet,Chendrit:D500:5833:8.40:12.10
Gonzales,Carlos:D433:7732:18.00:24.00
Bush,G:D500:8343:13.00:19.00
$ cat 2a
181::16:012404
1958:2:9:011204
343:2:8:011104
773::4:012404
$ join -t: -1 3 -2 1 1a 2a
181:Ahmed,Safdar:D433:20.40:30.00::16:012404