我有一个名为{
"result": [
{
"@type": "d",
"@version": 0,
"documentReads": 1,
"fullySortedByIndex": false,
"documentAnalyzedCompatibleClass": 1,
"recordReads": 1,
"fetchingFromTargetElapsed": 0,
"indexIsUsedInOrderBy": false,
"currentMatch": null,
"compositeIndexUsed": 1,
"current": "#169:839",
"depth": 0,
"involvedIndexes": [
"user._id"
],
"limit": -1,
"matched": {
"$ORIENT_DEFAULT_ALIAS_0": "#1770:0",
"theEdge": "#1817:1889"
},
"evaluated": 1,
"elapsed": 1490.7661,
"resultType": "collection",
"resultSize": 1,
"@fieldTypes": "documentReads=l,documentAnalyzedCompatibleClass=l,recordReads=l,fetchingFromTargetElapsed=l,compositeIndexUsed=l,current=x,involvedIndexes=e,evaluated=l,elapsed=f"
}
],
"notification": "Query executed in 1.521 sec. Returned 1 record(s)"
}
的文件,其中包含以下数据:
applications.txt
此文件中的字符串包含我想要显示的主机名,如下所示:
MOB-x01gmobdb2a-PRD-IBG
TDST-AB-x01gtdsdb1a-UAT-CST
ABC-x01gabcdb2a-PRD-CBG
PQR-x01gpqrdb1a-UAT-IBG
XYZA-GZ-x01gxyzdb2a-PRD-TS
UVW-x01guvwdb1a-UAT-IBG
上述服务器中很少有UAT,很少有PROD服务器。如您所见,主机名夹在两种模式之间:
x01gmobdb2a
x01gtdsdb1a
x01gabcdb2a
x01gpqrdb1a
x01gxyzdb2a
x01guvwdb1a
(仅限小写x),-x
或-UAT
。无论第一个模式和第二个模式之间的字符串是什么,我们都需要显示。 注意:从第一个模式-PRD
也应该在输出中显示。示例主机名为:x
答案 0 :(得分:1)
一个使用awk:
$ awk 'match($0,/-x[^-]*/){print substr($0,RSTART+1,RLENGTH-1)}' file
x01gmobdb2a
x01gtdsdb1a
x01gabcdb2a
x01gpqrdb1a
x01gxyzdb2a
x01guvwdb1a
答案 1 :(得分:1)
这可以是您的解决方案。但没有x模式。我只选择了PRD和UAT。
cat applications.txt | grep -e PRD -e UAT |awk -F"-" '{print $(NF-2)}'