使用sed awk替换另一个文件中定义的变量

use*_*199 1 bash awk sed

我有一个users.txt文件格式:

User:CityID
Carl:0212
Syd:0312
Rick:9323
Run Code Online (Sandbox Code Playgroud)

和格式的city.txt文件

Anaheim:0212
San Jose:0312
Run Code Online (Sandbox Code Playgroud)

我需要使用city.txt文件中的城市名称替换users.txt中的每个CityID.我如何使用sed和awk实现这一目标?

我可以使用awk获取CityID的列:

awk -F$'\:' '{print $2}'< users.txt
Run Code Online (Sandbox Code Playgroud)

但它如何用相应的城市名称取代它们呢?

谢谢.

jay*_*ngh 5

这可行:

awk 'BEGIN{FS=OFS=":"}NR==FNR{a[$2]=$1;next}{$2=a[$2]}1' city.txt user.txt
Run Code Online (Sandbox Code Playgroud)
  • BEGIN{FS=OFS=":"} :我们将输入和输出字段分隔符设置为 :

  • NR==FNR{a[$2]=$1;next} :我们读取城市文件并创建一个数组来存储以城市ID索引的城市名称

  • {$2=a[$2]} :我们通过引用数组替换user.txt中的第二个字段

  • 1 :这是打印线