我有以下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