我具有以下輸入:grep的 - 正則表達式匹配的多個鍵 - 值對,並返回單線
TAG1 VALUE1;TAG2 VALUE2;sometext;TAG3 VALUE3;sometext;TAG4 VALUE4;TAG5 VALUE5;sometext
TAG1 VALUE1;sometext;TAG3 VALUE3;sometext;TAG4 VALUE4;TAG5 VALUE5;sometext
TAG1 VALUE1;TAG2 VALUE2;sometext;TAG3 VALUE3;sometext;TAG4 VALUE4;TAG5 VALUE5
TAG1 VALUE1;TAG2 VALUE2;sometext;TAG3 VALUE3;sometext;TAG5 VALUE5;sometext
TAG1 VALUE1;TAG2 VALUE2;sometext;
我需要下面的輸出:
TAG2 VALUE2;TAG3 VALUE3;TAG5 VALUE5;
TAG3 VALUE3;TAG5 VALUE5;
TAG2 VALUE2;TAG3 VALUE3;TAG5 VALUE5;
TAG2 VALUE2;TAG3 VALUE3;TAG5 VALUE5;
TAG2 VALUE2;
,或者如上述可替換地相同,但
grep -oP '(?<=TAG2).*?(?=;)|(?<=TAG3).*?(?=;)|(?<=TAG5).*?(?=;)'
:只有
我試過下面的值
它的工作原理,但每一個值是在單獨的行:
VALUE2
VALUE3
VALUE5
我不能假設所有線路將所有的標籤,所以我真的需要每個輸入的一行一行輸出。本地Linux工具首選 - sed,awk,grep等。
謝謝!
這是不錯的,但在現實世界中的標籤是不是很相似(例如DEV,SRC,DST,ACT) - 你的模式可以更新爲在這種情況下工作嗎? – lubas
+1好,我認爲PCRE在這裏會更好。 – anubhava
@lubas:看看我的編輯,它適合你嗎? – Toto