gpt4 book ai didi

Linux 狂欢。如果字段完全匹配则删除行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:02 28 4
gpt4 key购买 nike

我在名为 file.txt 的文件中有类似的内容

AA.201610.pancake.Paul
AA.201610.hello.Robert
A.201610.hello.Mark

现在,我只获得 3 个变量中的前三个字段,例如:

field1="A" 
field2="201610"
field3='hello'.

我想删除一行,如果它恰好包含前 3 个字段,例如,在上述情况下,我只想从 file.txt 中删除第三行。有没有办法做到这一点?有没有办法在同一个文件中做到这一点?我试过:

sed -i /$field1"."$field2"."$field3"."/Id file.txt

当然这会删除第二行和第三行

最佳答案

我建议为此使用 awk,因为 sed 只能进行正则表达式搜索,这需要转义所有特殊的元字符和 anchor 、单词边界等以避免错误匹配。

建议使用非正则表达式匹配的 awk:

awk -F '[.]' -v f1="$field1" -v f2="$field2" -v f3="$field3" '
!($1==f1 && $2==f2 && $3==f3)' file

AA.201610.pancake.Paul
AA.201610.hello.Robert

关于Linux 狂欢。如果字段完全匹配则删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36952791/

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