Shell
使用 grep 從列中提取字元串
我有一個基於列的 .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