我有一行:
-Dapp.id=XXX -Dapp.name=YYY -Dapp.inventory.id=KKK -Dapp.inventory1.id=UNDEFINED -app.id=MMM
在inventory.txt 文件中
。如果我使用下面的grep语句,我会得到整行而不是KKK
:
grep -F app.inventory.id= /cme/apps/install/*/inventory/*.txt
我也试过像-Fx
和-w
这样的标志,但没有任何作用。如何使用grep获取刚刚KKK
答案 0 :(得分:0)
如果您只想使用grep执行此操作,则可以使用内置PCRE库的grep。例如:
$ pcregrep -o 'app.inventory.id=\K[^[:space:]]+' /tmp/corpus
KKK
或者,如果您没有PCRE可用,则可以将grep与扩展正则表达式一起使用,然后使用cut来使用=
作为字段分隔符来获取正确的字段。例如:
$ grep -Eo 'app.inventory.id=\K[^[:space:]]+' /tmp/corpus | cut -d= -f2
KKK
答案 1 :(得分:0)
如果所有文件具有相同类型的输出,则意味着:
-Dapp.id=VALUE -Dapp.name=VALUE -Dapp.inventory.id=VALUE -Dapp.inventory1.id=VALUE [...]
然后您可以像这样使用awk:
grep -F app.inventory.id= /cme/apps/install/*/inventory/*.txt | awk -F ' ' '{print $3}' | awk -F '=' '{print $2}
答案 2 :(得分:0)
我认为sed
在这里更好一点:
sed -n 's/.*-Dapp.inventory.id=\([^ ]*\).*/\1/gp' /cme/apps/install/*/inventory/*.txt
如果您想要文件名,可以执行类似
的操作for filename in /cme/apps/install/*/inventory/*.txt; do
sed -n -e 's/.*-Dapp.inventory.id=\([^ ]*\).*/'$filename': \1/gp' $filename;
done
答案 3 :(得分:0)
containerURLForSecurityApplicationGroupIdentifier()
<强>的grep 强>
com.apple.security.application-groups
将大写字母与下一个空格匹配要查看匹配项:
grep -Eo "\s-Dapp.inventory.id=[A-Z]+\s" inventory.txt | cut -d '=' -f2
<强>切强>
答案 4 :(得分:0)
requestStateForRegion
救援!
awk
答案 5 :(得分:0)
awk -F '[= ]' '{print $6}' file
KKK