小编Rav*_*och的帖子

删除第 2 列中包含重复条目的所有行

我有一个包含两列的大文件,我想根据第 2 列中的重复条目删除该行。我想删除两个重复条目。

我试过:

awk '!seen[$2]++' filename
Run Code Online (Sandbox Code Playgroud)

但它只会删除一个重复项。

输入文件示例:

1  3
2  3
4  10
1  6
5  3
Run Code Online (Sandbox Code Playgroud)

预期输出:

4  10
1  6
Run Code Online (Sandbox Code Playgroud)

awk

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

sed regex 匹配多个字段和值,包括引号

我有一个(空格分隔的)输入文件,其中包含以下行:

field1=value1 field2="value 2" field3='value 3' field4="value '4'" ...
Run Code Online (Sandbox Code Playgroud)

字段数因行而异。为了正确处理这样的文件,我最好喜欢sed它并获得一些表格分隔的输出,例如:

field1 (tab) value1 (tab) field2 (tab) value 2 (tab) field3 (tab) value 3 (tab) field4 (tab) value '4'
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所做的最远的事情是诸如sed "s/\([a-z][a-z]*\)=\(['\"]\{0,1\}\)\(..*?\)\2/\t\1\t\3/g"但离解决我的问题太远了。我的困难是正确处理值的分隔符(引号)的缺失或存在。对于优雅(或着想geekness),我坚持sed,但也将考虑一个awk替代方案。

在此先感谢您的帮助,

编辑:我很震惊地说,但@Jotne 是对的。

echo "field1=value1 field2=\"value 2\" field3='value 3' field4=\"value '4'\"" | sed "s/\([a-z][a-z]*\)=\(\([^ ][^ ]*\)\|'\([^'][^']*\)'\|\"\([^\"][^\"]*\)\"\)/\1\t\3\4\5\t/g"
Run Code Online (Sandbox Code Playgroud)

不起作用: field1=value1 field2="value 2" field3='value 3' field4="value '4'"`

尽管以下(背后的想法是解析audit.log文件)有效:

root@XXX:~# tail -n 2 /var/log/audit/audit.log 
type=CRED_DISP msg=audit(1570385821.075:670): pid=32605 uid=0 auid=0 ses=399 msg='op=PAM:setcred …
Run Code Online (Sandbox Code Playgroud)

regex quotes awk sed

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

Notepad++ 命令行参数

我可以在哪里获取 Notepad++ 的所有命令行参数列表吗?我在 Windows 10 上使用 Notepad++ 7.5.1。

notepad++

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

标签 统计

awk ×2

notepad++ ×1

quotes ×1

regex ×1

sed ×1