2013-10-29 102 views
1

我有一個包含太多charechter和符號的文件。我想找到一個確切的字符串,然後剪切它,並將其賦予兩個變量。我用grep寫了它,但我想寫在**AWK**SEDAWK正則表達式查找字符串與模式

這裏是我的示例文件:

[email protected]|A#Z<inCWV6a=L?o`A5vIod"%[email protected],L;aN 
r^n<&)}[??!VcVIV**2zTest1.Test2n9**94EN~yK,$lU=9?UT.[ 
e`)G:FS.nGz%[email protected]~k!20aLJ^PU-[@}0W\ !8x 
cujOmEK"1;!cI134lu%0-A +/t!VIf?8uT`! 
aC1QAQY>4RE$46iVjAE^eo5yR| 
1?/T?<H5,%G~[|9I/c&8MY$O]%,UYQe{!{Bm[rRC[ 
aHC`<[email protected]_O>Yct.MXo[>r5^uV&[email protected]'Kiu\Y 
K(*}ldO:ZQnI8t989fi+ 
CrvEwmTQ80k3==,a'Jj9907+}NNy=0Op 
"nzb.j-.i%z5`U*8][email protected]'r;\x\;ylr_;q5F` A!~p* 

首先我想找到2zTest1.Test2n9再切前2後兩個charechter終於得到兩個詞沒有點(。)。第一個字我會發送到一個變量和第二個兩個另一個變量。

注意:我想要找到2zTest1.Test2n9然後我想剪下它。

輸出:

variable 1 = test1 
variable 2 = test2 

由於

+0

重複發佈? http://stackoverflow.com/questions/19655060/found-string-with-regex-in-awk-or-sed – Jotne

回答

2

sed隨着其:

sed -n 's/.*\(2z\(\(.*\)\.\(.*\)\)n9\).*/variable 1 = \L\3\nvariable 2 = \L\4/p' your.file 

輸出:

variable 1 = test1 
variable 2 = test2 
+0

謝謝。我不想給我的sed命令** 2z **和** n9 **。我可以使用'regex'作爲例子'[0-9] [a-z]'而不是2z和n9。 – MSK

+0

[0-9] [a-z]作爲起始分隔符只有在確定varname是大寫的時才起作用。但[az] [0-9]永遠不會作爲結尾分隔符,因爲var名稱本身包含[az] – hek2mgl

+0

它並不總是'2z'和'n9',例如somthimes是'2X'和'T9'或' 2g'和'M9'。 2和9是永久性的,但這些數字之前和之後都是可變的。 – MSK

2

利用GNU AWK:

read var1 var2 < <(
    gawk 'match($0, /2[[:alpha:]]([^.]+)\.(.*)[[:alpha:]]9/, m) { 
     print m[1], m[2] 
    }' file 
) 
echo "var1=$var1" 
echo "var2=$var2" 
var1=Test1 
var2=Test2 

我看了你的意見hek2mgl的答案 - 這些要求需要在問題本身。

相關問題