使用 grep 从列中提取字符串

使用 grep 从列中提取字符串

我有一个基于列的 .txt 文件,我想 grep 输出通用名称,但遇到了一点麻烦。

V   300223164711Z       01  unknown /C=UK/O=LMG/OU=server/CN=server/name=server/[email protected]
V   300223170002Z       02  unknown /C=UK/O=LMF/OU=server/CN=test/name=server/[email protected]
V   300223170935Z       03  unknown /C=UK/O=risk/OU=server/CN=risk/name=server/[email protected]

我当前的 grep 输出执行以下操作:

tail -n +2 index.txt | grep "^V" | cut -d '/' -f 5 | nl -s ') '
     1) CN=test
     2) CN=risk

我只希望名称为输出,“测试”或“风险”。实现此目的的最简单方法是什么?

答案1

您可以awk按照这种方式进行操作(假设 CN 的位置始终相同:

awk -F\/ '$5~"test"|| $5~"risk" {gsub("CN=","",$5);print $5}'

要添加找到 CN 记录的行号,您可以使用如下代码:

awk -F\/ '$5~"test"|| $5~"risk" {gsub("CN=","",$5);print NR") "$5 }'

答案2

sed应该是你的朋友之一

echo CN=test | sed -e 's/CN=//'
test

相关内容