我有以下sed命令,它將括號放在第一個單詞的周圍 - (你好) - 我想如果我想改變這個把括號放在第二個單詞旁邊(\ 1)改變爲(\ 2),因爲我認爲這會提取第二個單詞但它不起作用 - 那麼引用第二個單詞的正確方法是什麼?Sed - 如何將括號括在第二個字
echo "hello world" | sed -re 's/(^\w*)/(\1)/'
我有以下sed命令,它將括號放在第一個單詞的周圍 - (你好) - 我想如果我想改變這個把括號放在第二個單詞旁邊(\ 1)改變爲(\ 2),因爲我認爲這會提取第二個單詞但它不起作用 - 那麼引用第二個單詞的正確方法是什麼?Sed - 如何將括號括在第二個字
echo "hello world" | sed -re 's/(^\w*)/(\1)/'
\ 2不引用第二個單詞,而是引用第二個括號內的表達式。因此,包圍這兩個詞應該工作:
echo hello world | sed -r 's/(\w+) (\w+)/\1 (\2)/'
這可能會爲你工作:
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'
您正在尋找這樣的:
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