我有如下数千条数据线。这是一个字符串。我正在寻找一种方法来只删除里面的数据,所以它只是这样。 " [ActiveOrBackup:ACTIVE] [状态:运营]" ActiveOrBackUp:可以转为ACTIVE模式或BACKUP模式。和状态:可以转向运营和不可访问。这可能吗 ?谢谢。
我的字符串看起来像这样。 $ MyString的
[samplingStatus: OK] [Version: Wind6.4.0.A4] [ActiveOrBackup: ACTIVE] [Status: OPERATIONAL] [downloads: 0] [state: OFF]
我的目标。 $ AIMRESULT
[ActiveOrBackup: ACTIVE] [Status: OPERATIONAL]
当它是备份服务器时或以下。
[ActiveOrBackup: BACKUP] [Status: OPERATIONAL]
我的grep字符串代码如下所示。这抓住了$ MYSTRING。我的目标是让它看起来像$ AIMRESULT。有没有perl / awk / sed命令,我可以管道,让我这样做?谢谢。
egrep "name=|sampling" Tmp1.txt > test1 | sed 's/\(.*\)table/table/g' test1 | cut -d "@" -f 4 | cut -d ")" -f 1 > test
答案 0 :(得分:1)
假设您的"字段分隔符"真的是2间隔:
AIMRESULT=$( perl -F'\s{2}' -lane 'print join " ", grep {/\[(?:ActiveOrBackup|Status):/} @F' <<< "$MYSTRING" )
注意,尽量避免使用ALL_CAPS_VARS的习惯 - 有一天你会写PATH=/foo/bar
,然后想知道为什么你的脚本坏了。
答案 1 :(得分:0)
也许我错过了一些东西,但是不知道这样做了吗?
sed -e "s/^.*ActiveOrBackup: \([A-Z]*\).*Status: \([A-Z]*\).*$/[ActiveOrBackup: \1] [Status: \2]/"