我的输入文件:
file1
231|35000
234|15000
242|60000
254|12313
345|50000
435|24300
file2
1|madhan|retl|231|tcs
2|vaisakh|retl|234|tcs
4|sam|ins|242|infy
5|tina|bfs|254|tcs
3|ram|bfs|345|infy
6|subbu|bfs|435|infy
输出: 试图获得
col1 , col2 of file1 and col2 of file2 based on common column(col1 of file1 and col4 of file2)
我的代码:
awk 'BEGIN { FS="|";} NR==FNR{a[$1] = $2;next} ($4 in a) {print $2 "|" $4 "|" a[$1]} ' file_1 file_2
我得到了:
madhan|231|
vaisakh|234|
sam|242|
tina|254|
ram|345|
subbu|435|
你能帮助为什么最后一个电话以空格出现
答案 0 :(得分:0)
尝试类似:
join -t '|' -1 1 -2 4 file1 file2 | awk -F'|' '{print $1 "|" $2 "|" $4}'
从file1上的字段1和文件2上的字段4加入,并使用awk提取所需的字段。
答案 1 :(得分:0)
这应该做:
awk -F\| 'FNR==NR {a[$1]=$0;next} {for (i in a) if (i==$4) print a[i]"|"$2}' file1 file2
231|35000|madhan
234|15000|vaisakh
242|60000|sam
254|12313|tina
345|50000|ram
435|24300|subbu
使用第一个字段作为索引,将file1
存储在数组a
中
然后它在第一个文件中对file2
中的第四个字段测试索引
如果它们相同,则打印来自file1
的{{1}}和第二个字段的数据。
答案 2 :(得分:0)
它是空白的,因为数组中不存在该键。您正在存储file1的第一列作为键,它是file2的第4列。
$ awk '
BEGIN { FS=OFS="|" }
NR==FNR { a[$1]=$2; next }
($4 in a) { print $2, $4, a[$4] }
' file1 file2
madhan|231|35000
vaisakh|234|15000
sam|242|60000
tina|254|12313
ram|345|50000
subbu|435|24300
如果您需要所要求的O / P中所述的订单,那么
$ awk 'BEGIN {FS=OFS="|"}NR==FNR{a[$4]=$2;next} ($1 in a) {print $0, a[$1]}' file2 file1
231|35000|madhan
234|15000|vaisakh
242|60000|sam
254|12313|tina
345|50000|ram
435|24300|subbu