我想使用sed替换句子中的第一个和第三个单词。
我的代码看起来像这样:
sed 's/\^ \([a-zA-Z]\*\) \(\^[a-zA-Z]\) \([a-zA-Z]\*\) \(\^[a-zA-Z]\) \([a-zA-Z]\*\) \(.\*\) / \5 \2 \3 \4 \1 \6 /g' $1
单词仅包含小写和大写字符。不是a-z A-Z的字符是分隔符。我的代码什么也没做:)
答案 0 :(得分:0)
不要逃避*
字符:
sed 's/^\([a-zA-Z]*\)\([^a-zA-Z]\)\([a-zA-Z]*\)\([^a-zA-Z]\)\([a-zA-Z]*\)\(.*\) /\5\2\3\4\1\6/g' $1
此外,您不需要重新组合之间的空格。
答案 1 :(得分:0)
#!/bin/sh
echo "wordone wordtwo wordthree wordfour wordfive" \
| sed -Ee 's/^([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+)/\3 \2 \1/'
答案 2 :(得分:0)
Try this:
$ sed -r 's/^([a-zA-Z]*)([^a-zA-Z]+[a-zA-Z]+[^a-zA-Z]+)([a-zA-Z]*)(.*)/\3\2\1\4/' infile
$ line="one two three four five"
$ echo "$line" | sed -r 's/^([a-zA-Z]*)([^a-zA-Z]+[a-zA-Z]+[^a-zA-Z]+)([a-zA-Z]*)(.*)/\3\2\1\4/'
Output:
three two one four five
$ line="one,two,three,four,five"
$ echo "$line" | sed -r 's/^([a-zA-Z]*)([^a-zA-Z]+[a-zA-Z]+[^a-zA-Z]+)([a-zA-Z]*)(.*)/\3\2\1\4/'
Output:
three,two,one,four,five