我有一个数字列表,我想添加到另一个文件的末尾作为最后一列:
1:.196
5:.964
6:.172
前面的数字(1,5和6)表示必须在目标文件的哪一行附加数字,以便第一行以结尾.196
,第五行.964
以此类推。通常paste file1 file2
不考虑行号,而只是1:.196
在第一行.964
的末尾和第二行的末尾(而不是第五行)添加。任何想法如何正确地做到这一点?
预期将是这样的:
Lorem Ipsum 1238 Dolor Sit 4559.196
Lorem Ipsum 4589 Sit elitr 1234
Lorem Ipsum 3215 Dolor Sit 5678
Lorem Ipsum 7825 Dolor Sit 9101
Lorem Ipsum 1865 Dolor Sit 1234.964
与awk
:
# create two test files
printf '%s\n' one two three four five six > target_file
printf '%s\n' 1:.196 5:.964 6:.172 > numbers
awk -F':' 'NR==FNR{ a[$1]=$2; next } FNR in a{ $0=$0 a[FNR] }1' numbers target_file
输出:
one.196
two
three
four
five.964
six.172
解释:
awk -F':' ' # use `:` as input field separator
NR==FNR { # if this is the first file, then...
a[$1]=$2 # save the second field in array `a` using the first field as index
next # stop processing, continue with the next line
}
FNR in a { # test if the current line number is present in the array
$0=$0 a[FNR] # append array value to the current line
}
1 # print the current line
' numbers target_file
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句