gpt4 book ai didi

linux - 仅当包含它的行还包含使用 Bash 在另一个文件中找到的数字时,如何替换文件中的字符串?

转载 作者:可可西里 更新时间:2023-11-01 11:45:27 25 4
gpt4 key购买 nike

我想用 Bash 在以下 file.csv 中用 replace 替换 target 的所有实例,但前提是包含它的行还包含在列表.txt:

文件.csv:

1,abc,target,abc
2,abc,target,abc
3,abc,target,abc

列表.txt:

1
3

期望的输出:

1,abc,replace,abc
2,abc,target,abc
3,abc,replace,abc

我正在尝试使用 sed:

sed 's/target/replace' file.csv > newfile.csv

我怎样才能包含根据 list.txt 检查每一行的逻辑?

最佳答案

这是一个更适合awk的工作:

awk 'BEGIN { FS=OFS="," }       # set input/output field delimiter to comma
FNR == NR { # for 1st file in the arguments i.e. list.txt
a[$1] # store each value of $1 in an array a
next # move to next record
}
$1 in a { # for 1st file in the arguments i.e. file.csv
sub(/target/, "replace", $3) # replace target by replace in 3rd column
} 1' list.txt file.csv # print each record from 2nd file

1,abc,replace,abc
2,abc,target,abc
3,abc,replace,abc

Code Demo

关于linux - 仅当包含它的行还包含使用 Bash 在另一个文件中找到的数字时,如何替换文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39960720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com