2011-12-07 36 views
0

我有以下sed命令,它將括號放在第一個單詞的周圍 - (你好) - 我想如果我想改變這個把括號放在第二個單詞旁邊(\ 1)改變爲(\ 2),因爲我認爲這會提取第二個單詞但它不起作用 - 那麼引用第二個單詞的正確方法是什麼?Sed - 如何將括號括在第二個字

echo "hello world" | sed -re 's/(^\w*)/(\1)/' 

回答

1

\ 2不引用第二個單詞,而是引用第二個括號內的表達式。因此,包圍這兩個詞應該工作:

echo hello world | sed -r 's/(\w+) (\w+)/\1 (\2)/' 
1

這可能會爲你工作:

echo "hello world" | sed -re 's/\w+/(&)/g' 

echo "hello world" | sed -re 's/(^\w*)(\s*)(\w*)/(\1)\2(\3)/' 

爲了支架只是第2個字:

echo "hello world" | sed -re 's/\w*/(&)/2' 

要開始括號的第2個字:

echo "hello brave new world" | sed -re 's/\w*/(&)/2g' 
2

您正在尋找這樣的:

echo "hello world" | sed 's/\(.*\) \(.*\)/\2/' 

世界

echo "hello world" | sed 's/\(.*\) \(.*\)/\1/' 

你好

交換的話:

echo "hello world" | sed 's/\(.*\) \(.*\)/\2 \1/' 

世界你好

...並插入支架:

echo "hello world" | sed 's/\(.*\) \(.*\)/\1 [\2]/' 

你好[世界]

工作原理: * *匹配這兩個詞的 「Hello World」

接下來,用括號括起來表示感興趣的區域。

這裏有一個很好的教程: http://www.ibm.com/developerworks/linux/library/l-sed2/index.html