特定字段的值我有一個文件中的行看起來像下面如何使用grep來提取線
....... DisplayName="john" ..........
其中....
代表可變數量等領域。
使用以下grep命令,我能提取所有具有有效的「顯示名稱」字段
grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test
然而行,我希望從每一個只提取名稱(即「約翰」)而不是grep返回的整行。我試圖將流水線輸出到cut命令,但它不接受字符串分隔符。
特定字段的值我有一個文件中的行看起來像下面如何使用grep來提取線
....... DisplayName="john" ..........
其中....
代表可變數量等領域。
使用以下grep命令,我能提取所有具有有效的「顯示名稱」字段
grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test
然而行,我希望從每一個只提取名稱(即「約翰」)而不是grep返回的整行。我試圖將流水線輸出到cut命令,但它不接受字符串分隔符。
具體做法是:
sed 's/.*DisplayName="\(.*\)".*/\1/'
應該做的,SED語義是S/subsitutethis/forthis /其中 「/」 是分隔符。與轉義1組合的轉義括號用於保留由圓括號指定的模式部分。該表達式將所有內容保留在displayname後面的括號內,並將其餘部分拋棄。
這也可以工作,而先用grep,如果你使用:
sed -n 's/.*DisplayName="\(.*\)".*/\1/p'
-n選項和P標誌告訴sed只打印在修改行。
這個工作對我來說:
awk -F "=" '/DisplayName/ {print $2}'
返回"john"
。刪除報價john
用途:
awk -F "=" '/DisplayName/ {gsub("\"","");print $2}'