Shell

使用 grep 從列中提取字元串

  • February 27, 2020

我有一個基於列的 .txt 文件,我想用 grep 輸出公用名,但有點麻煩。

V   300223164711Z       01  unknown /C=UK/O=LMG/OU=server/CN=server/name=server/emailAddress=support@kam.org
V   300223170002Z       02  unknown /C=UK/O=LMF/OU=server/CN=test/name=server/emailAddress=support@kam.org
V   300223170935Z       03  unknown /C=UK/O=risk/OU=server/CN=risk/name=server/emailAddress=support@kam.org

我目前的 grep 輸出執行以下操作:

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

我只希望名稱是輸出,“測試”或“風險”。實現這一目標的最簡單方法是什麼?

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 }'

sed應該是你的朋友之一

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

引用自:https://serverfault.com/questions/1004813