删除重复项(两行)并仅根据子字符串重复
Remove duplicates (both lines) and duplicate only based on a sub-string
也许有人可以帮我解决以下问题。
我使用:
cat file1 file2 | sort -t} -k2 | less
从行中的位置 5 开始比较时输出包含重复项
A01} value1 = 5000000000
B01} value1 = 5000000000
A01} value2 = 6000000000
B01} value2 = 7000000000
如何删除这两行:
A01} value1 = 5000000000
B01} value1 = 5000000000
完全来自我的输出?
结果应该是:
A01} value2 = 6000000000
B01} value2 = 7000000000
类似这样的东西可能对你有用:
% grep -vFf <(cut -d'}' -f2 file.txt | sort | uniq -d) file.txt
A01} value2 = 6000000000
B01} value2 = 7000000000
这将创建一个包含所有非唯一行的 "file":
cut -d'}' -f2 file.txt | sort | uniq -d
<(...)
是一个进程替换,工作方式如下:
% echo <(ls)
/proc/self/fd/11
grep -F
表示纯文本搜索,-f
需要一个带有关键字的文件名来搜索。 -v
逆转比赛。
对于多个文件,您需要 -h
来抑制匹配的文件名:
grep -hvFf <(cut -d'}' -f2 a.txt b.txt | sort | uniq -d) a.txt b.txt
我假设您想 sort/uniq 使用从键 2(值)到键 4(数字)的字段。因此调用 uniq
:
时会跳过字段 1
cat file1 file2 |sort -k 2,4 |uniq --skip-fields=1 --unique
也许有人可以帮我解决以下问题。
我使用:
cat file1 file2 | sort -t} -k2 | less
从行中的位置 5 开始比较时输出包含重复项
A01} value1 = 5000000000
B01} value1 = 5000000000
A01} value2 = 6000000000
B01} value2 = 7000000000
如何删除这两行:
A01} value1 = 5000000000
B01} value1 = 5000000000
完全来自我的输出?
结果应该是:
A01} value2 = 6000000000
B01} value2 = 7000000000
类似这样的东西可能对你有用:
% grep -vFf <(cut -d'}' -f2 file.txt | sort | uniq -d) file.txt
A01} value2 = 6000000000
B01} value2 = 7000000000
这将创建一个包含所有非唯一行的 "file":
cut -d'}' -f2 file.txt | sort | uniq -d
<(...)
是一个进程替换,工作方式如下:
% echo <(ls)
/proc/self/fd/11
grep -F
表示纯文本搜索,-f
需要一个带有关键字的文件名来搜索。 -v
逆转比赛。
对于多个文件,您需要 -h
来抑制匹配的文件名:
grep -hvFf <(cut -d'}' -f2 a.txt b.txt | sort | uniq -d) a.txt b.txt
我假设您想 sort/uniq 使用从键 2(值)到键 4(数字)的字段。因此调用 uniq
:
cat file1 file2 |sort -k 2,4 |uniq --skip-fields=1 --unique