我有一个看起来像这个玩具示例的文件。我的实际文件有 400 万行,我需要删除其中大约 10 行。
ID Data1 Data2
1 100 100
2 100 200
3 200 100
ID Data1 Data2
4 100 100
ID Data1 Data2
5 200 200
Run Code Online (Sandbox Code Playgroud)
我想删除看起来像标题的行,除了第一行。
最终文件:
ID Data1 Data2
1 100 100
2 100 200
3 200 100
4 100 100
5 200 200
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我今天遇到了这个用例。乍一看似乎很简单,但是摆弄sort
, uniq
,sed
并awk
发现它很重要。
如何删除所有成对的重复行?换句话说,如果给定行有偶数个重复项,则将其全部删除;如果重复行数为奇数,则删除除一行之外的所有行。(可以假设已排序的输入。)
一个干净优雅的解决方案是可取的。
示例输入:
a
a
a
b
b
c
c
c
c
d
d
d
d
d
e
Run Code Online (Sandbox Code Playgroud)
示例输出:
a
d
e
Run Code Online (Sandbox Code Playgroud) 我想编写一个 perl one-liner 来替换两个特定的连续字符串的每个实例,这些字符串可能会或可能不会被空格分隔。
例如,假设我的两个字符串是john paul
并且george
我想用pete
. 运行单线
$ cat ~/foo
john paulgeorge
john paul george
john paul
george
george john paul
Run Code Online (Sandbox Code Playgroud)
应该导致
$ cat ~/foo
pete
pete
pete
george john paul
Run Code Online (Sandbox Code Playgroud)
我唯一想到的是
$ perl -p -i -e 's/john paul\s*george/pete/g' ~/foo
Run Code Online (Sandbox Code Playgroud)
但这导致
$ cat ~/foo
pete
pete
john paul
george
george john paul
Run Code Online (Sandbox Code Playgroud)
有没有办法改变我的单线?