如何使用grep从行中提取特定字段值
我在一个文件中有如下行如何使用grep从行中提取特定字段值,grep,Grep,我在一个文件中有如下行 ....... DisplayName="john" .......... 其中,…表示其他字段的可变数量 使用以下grep命令,我能够提取所有具有有效“DisplayName”字段的行: grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test 但是,我只希望从每一行中提取名称(即“john”),而不是从grep返回的整行中提取。我尝试将输出管道化到cut命令中,但它不接受字符串分隔符。特别是: sed 's/.*Displa
....... DisplayName="john" ..........
其中,…
表示其他字段的可变数量
使用以下grep命令,我能够提取所有具有有效“DisplayName”字段的行:
grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test
但是,我只希望从每一行中提取名称(即“john”),而不是从grep返回的整行中提取。我尝试将输出管道化到cut
命令中,但它不接受字符串分隔符。特别是:
sed 's/.*DisplayName="\(.*\)".*/\1/'
应该这样做,sed语义是s/substitutethis/forthis/其中“/”是分隔符。转义括号和转义1用于保留由括号指定的图案部分。此表达式将所有内容保留在displayname后面的括号内,并将其余内容丢弃
如果您使用:
sed -n 's/.*DisplayName="\(.*\)".*/\1/p'
n选项和p标志告诉sed只打印更改的行
更多信息请访问:这对我很有用:
awk -F "=" '/DisplayName/ {print $2}'
它返回“john”
。要删除john的引号,请使用:
awk -F "=" '/DisplayName/ {gsub("\"","");print $2}'