Cas*_*Cas 3 command-line text-processing
假设我有以下文件:
$ cat test.txt
a
-----
b
-----
-----
c
-----
-----
-----
d
-----
e
-----
-----
Run Code Online (Sandbox Code Playgroud)
现在我想删除所有-----, 但前提是它们相互重复。所以结果应该是这样的:
a
-----
b
-----
c
-----
d
-----
e
-----
Run Code Online (Sandbox Code Playgroud)
我试过了grep -Pvz -- "-----\n-----",但这没有用。
ste*_*ver 10
这正是该uniq命令的用途:
NAME
uniq - report or omit repeated lines
SYNOPSIS
uniq [OPTION]... [INPUT [OUTPUT]]
DESCRIPTION
Filter adjacent matching lines from INPUT (or standard input), writing to OUTPUT
(or standard output).
With no options, matching lines are merged to the first occurrence.
Run Code Online (Sandbox Code Playgroud)
所以
$ uniq test.txt
a
-----
b
-----
c
-----
d
-----
e
-----
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用此 sed one-liner 69. 从文件中删除重复的连续行(模拟“uniq”)来自Sed One-Liners Explained,第三部分:选择性删除某些行和特殊应用程序
sed '$!N; /^\(.*\)\n\1$/!P; D' test.txt
Run Code Online (Sandbox Code Playgroud)
如果您想test.txt就地编辑(通过添加-i或--in-place选项),这可能是首选。
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |