干猕猴*_*猕猴桃 15 sed awk text-processing
我可以使用什么 sed/awk 命令?只需sort -u
将删除所有实例
输入:
abc
abc
def
abc
abc
def
Run Code Online (Sandbox Code Playgroud)
预期输出:
abc
def
abc
def
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 36
这就是uniq
标准命令的用途。
uniq your-file
Run Code Online (Sandbox Code Playgroud)
请注意,uniq
像 GNU这样的一些实现uniq
会给您排序相同(其中strcoll()
返回 0)而不是字节到字节相同(其中memcmp()
或strcmp()
返回 0)的行序列中的第一个。无论uniq
实现如何,要强制进行字节到字节的比较,您可以强制使用以下语言环境C
:
LC_ALL=C uniq your-file
Run Code Online (Sandbox Code Playgroud)
Vim 可以很好地实现这一点:
:g/\v^(.*\n)\1/d
Run Code Online (Sandbox Code Playgroud)
或者,如果您更愿意使用 vim 作为命令行工具,您可以这样做
vim file -c "g/\v^(.*\n)\1/d" -c "wq"
Run Code Online (Sandbox Code Playgroud)
这样你就不必为以后退出vim而烦恼;)
解释:
:g/
Run Code Online (Sandbox Code Playgroud)
在与此正则表达式匹配的所有行上...
\v^(.*\n)\1
Run Code Online (Sandbox Code Playgroud)
任何跟随其自身的行...
/d
Run Code Online (Sandbox Code Playgroud)
运行d elete 命令(删除当前行)。该-c "wq"
是保存更改并退出。