2つのファイルがあり、最初のファイルはfile1
ルーター構成を含む1000行です。いくつかはこれです -
!
ipv6 prefix-list CCAV6 seq 5 permit 2217:AB23::/40
route-map DENY-ALL deny 11
!
ip pim sparse-mode
ipv6 address 2617:FB23:0:1::1/128
ipv6 ospf 1 area 0.0.0.0
など。 2 番目のファイルは、file2
ipv6 を ipv4 アドレスにマップすることです。それは次のとおりです -
2617:FB23:0:1::1/128 245.82.242.31/32
2217:AB23::/40 64.211.7.157/31
繰り返し交換できるようにしたいですfile1
。最初の列がfile2
一部と一致する場合は、file1
2番目の列に置き換える必要があります。file2
たとえば、処理後に表示されると予想される出力は次のとおりです。
!
ipv6 prefix-list CCAV6 seq 5 permit 64.211.7.157/31
route-map DENY-ALL deny 11
!
ip pim sparse-mode
ipv6 address 245.82.242.31/32
ipv6 ospf 1 area 0.0.0.0
を試してみましたが、awk
私が遭遇したすべてのオプションは、コピーする場所に関する事前の知識を必要としているように見え、最初の列の位置はプロセス全体で一定に保たれませんfile1
。いくつかのアイデアをいただきありがとうございます。
ベストアンサー1
複数のスペース/タブフィールドの区切り文字がfile1
単一のスペースに置き換えられることについてあまり心配しない場合:
awk 'NR == FNR{a[$1]=$2; next};
{for (i=1; i<=NF; ++i) printf "%s%s", $i in a?a[$i]: $i, i == NF?"\n": " "}' file2 file1
生産する
!
ipv6 prefix-list CCAV6 seq 5 permit 64.211.7.157/31
route-map DENY-ALL deny 11
!
ip pim sparse-mode
ipv6 address 245.82.242.31/32
ipv6 ospf 1 area 0.0.0.0