相关疑难解决方法(0)

从文件中删除额外的标题行,除了第一行

我有一个看起来像这个玩具示例的文件。我的实际文件有 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)

我怎样才能做到这一点?

text-processing

18
推荐指数
5
解决办法
1万
查看次数

成对删除重复的行?

我今天遇到了这个用例。乍一看似乎很简单,但是摆弄sort, uniq,sedawk发现它很重要。

如何删除所有成对的重复行?换句话说,如果给定行有偶数个重复项,则将其全部删除;如果重复行数为奇数,则删除除一行之外的所有行。(可以假设已排序的输入。)

一个干净优雅的解决方案是可取的。

示例输入:

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)

sed text-processing uniq

16
推荐指数
1
解决办法
7204
查看次数

正则表达式替换可能由空格分隔的两个连续字符串的实例

我想编写一个 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)

有没有办法改变我的单线?

perl

4
推荐指数
1
解决办法
756
查看次数

标签 统计

text-processing ×2

perl ×1

sed ×1

uniq ×1