Xargs

基於另一個文件編輯文件中的特定字元串

  • March 22, 2022

您好,我有一個名為 users 的文件。例如,在該文件中,我有一個使用者列表

user1
user2
user3

現在我有另一個名為 search 的文件,其中有一個名為 owner = user 的特定字元串,例如

owner = user1
random text
random text
owner = user15
random text 
random text 
owner = user2

那麼是否可以根據使用者文件找到所有使用者並將這些使用者重命名為 user@domain.com ?例如

owner = user1@domain.com
random text
random text
owner = user15
random text 
random text 
owner = user2@domain.com

我使用 ack 命令和 cat 命令得到了一些零碎的東西,但我是程式新手,所以我無法獲得正確的輸出。我想出的是下面,但它並沒有真正做我需要的。非常感謝任何幫助。

cat users | xargs -i sed 's/{}/moo/' searches

試試 awk:

awk 'NR == FNR {SRCH[$1]; next} $NF in SRCH {$NF = $NF "@domain.com"} 1'   users searches
owner = user1@domain.com
random text
random text
owner = user15
random text 
random text 
owner = user2@domain.com

如果使用者在users文件中找到它,它會添加附錄。

使用awk

awk '
 NR==FNR{users[$0]=$0"@domain.com"}
 NR>FNR && $1 == "owner" && $3 in users { $3=users[$3]; }
 NR>FNR
' users searches

要直接編輯文件,請追加> searches.tmp && mv searches.tmp searches

引用自:https://unix.stackexchange.com/questions/696345