Any ideas how to the following using awk?
Two input files, data.txt and keys.txt:
data.txt contains some data:
A;1
B;2
A;3
keys.txt contains "key;value" pairs ("C" is in this example not part of data.txt, but the awk script should still work):
A;30
B;20
C;10
The output should be as follows:
A;1;30
B;2;20
A;3;30
Hence, each row in data.txt that contains any key from keys.txt should get the corresponding value appended to the row in data.txt.
awk
to the rescue!assumes the second file has unique keys unlike first file (if not you need to specify what happens then)
ps. note the order of files...
awk solution:
The output:
NR==FNR
- processing the first file i.e.file2
a[$1]=$2
- accumulating additional values for each keyif($1 in a) $0=$0 FS a[$1]
- appending value if first column matches