Используя это как file1
:
var1 junk 101
var2 junk 102
var3 junk 103
И это как file2
:
var1 201
var2 202
var3 203
Это извлечет поле 3 из file1
, где поле 1 равно var1
:
awk '$1=="var1"{print $3}' file1
101
Это заменит поле 2 в file2
на x
(101), где первое поле - var2
:
awk -v x=101 '$1=="var2"{$2=x}1' file2
var1 201
var2 101
var3 203
И, комбинируя их, вы получаете:
awk -v x=$(awk '$1=="var1"{print $3}' file1) '$1=="var2"{$2=x}1' file2
var1 201
var2 101
var3 203
Предполагая, что вы хотите перезаписать первый файл, вы можете выполнить условное mv
, которое выполняется только тогда, когда все работает:
awk -v x=$(awk '$1=="var1"{print $3}' file1) '$1=="var2"{$2=x}1' file2 > /tmp/a && mv /tmp/a file2