簡體   English   中英

如何使用 Bash 使用另一個文本文件中存在的轉換替換文本文件列中的名稱

[英]How to Replace Names in Column of a Text File, Using a Conversion Present in Another Text File With Bash

我進行了搜索,其他帖子都不適合我的情況。 基本上,我有一個很長的主文本文件,看起來像這樣:

Group1 0 100
Group2 100 200
Group3 200 300
Group4 300 400

等..

我需要替換主文本文件中的名稱,使用另一個列出它們應該轉換成什么的文本文件。 該轉換文本文件如下所示:

Group1 Team1
Group2 Team2
Group3 Team2
Group4 Team3

因此,通過使用腳本,我想將主文本文件轉換為:

Team1 0 100
Team2 100 200
Team2 200 300
Team3 300 400

同樣,這些都是大文件,而且它們的長度不同。 任何幫助深表感謝!

將轉換列表讀入數組,然后用它替換原文件中的第一個字段:

awk 'NR == FNR { a[$1] = $2; next } { $1 = a[$1] } 1' conversion.txt original.txt
  • NR == FNR條件以第一個文件為目標(總行數等於文件行數)
  • next跳過腳本的其余部分並轉到下一行
  • 1是一個始終為真的條件,因此默認操作{ print }

如果要確保存在替換,可以在第二個操作塊之前$1 in a添加條件$1 in a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM