2012-09-20 77 views
1

我想用SED打印匹配彭定康,例如:
我想要得到的UUID,這樣我就可以使用這個:
blkid $1 | grep -o -E "[a-f0-9-]{8}([a-f0-9-]{4}){3}[a-f0-9-]{12}"
我該怎麼辦這使用sed或awk?如何使用SED打印匹配彭定康

回答

3

你想要這個嗎?

AWK:

kent$ echo '/dev/sda6: UUID="c6e3ce88-f44e-4261-9178-042db8423081" TYPE="ext3"'|awk -F'UUID="|" ' '{print $2}' 
c6e3ce88-f44e-4261-9178-042db8423081 

的sed:

kent$ echo '/dev/sda6: UUID="c6e3ce88-f44e-4261-9178-042db8423081" TYPE="ext3"'|sed -r 's/.*UUID="([^"]*).*"/\1/g' 
c6e3ce88-f44e-4261-9178-042db8423081 
+0

謝謝,這就是我想要的 – zjhui

2

sed

sed -n 's/pattern/&/p' file 

-n是告訴sed安靜,&匹配字符串,p是打印。

awk

awk '/pattern/' file 

在你的情況下,改變pattern[a-f0-9-]{8}([a-f0-9-]{4}){3}[a-f0-9-]{12},可能需要使用\逃脫[

+0

模式是錯誤的。正確的:[a-f0-9 - ] {8} - ([a-f0-9 - ] {4} - ){3} [a-f0-9 - ] {12} – vak

0

awk和SED的解決方案:

$ blkid /dev/sda2 | sed -e 's/.*UUID="\([0-9A-F]*\).*/\1/' 
16A42BA2A42B837B 

$ blkid /dev/sda2 | awk '{split($2, tmp, "=") ; print tmp[2]}' 
"16A42BA2A42B837B" 

$ blkid /dev/sda2 | awk -F'UUID="|"' '{print $2}' 
16A42BA2A42B837B 
1
blkid | sed -nr 's/^.+UUID="(.*?)" .+$/\1/p' 
0

用sed:

sed -n 's/.*\(Pattern\).*/\1/p' 

測試

回聲 「< TextValue>開始</TextValue>」 < TextValue>開始</TextValue> echo「< TextValue>開始</TextValue>」| sed -n's /。 (開始)。/\ 1/p' 開始