0
你好,谢谢。我还有一个不太懂得地方,这里没有用正则表达式判断哪个是单词,就可以调换吗?
星空的衣角 发表于 2016-6-8 09:45
sed -r 's#(^.)(.*)(.$)#\3\2\1#g' file
你好,谢谢。我还有一个不太懂得地方,这里没有用正则表达式判断哪个是单词,就可以调换吗?
0
你这样只是首尾字母互换了,并没有达到他的要求:首尾单词互换
试试这样?
星空的衣角 发表于 2016-6-8 09:45
sed -r 's#(^.)(.*)(.$)#\3\2\1#g' file
你这样只是首尾字母互换了,并没有达到他的要求:首尾单词互换
- sed -r 's#(^[[:alpha:]]*)([[:space:]])(.*)([[:space:]])(.*)#\5\2\3\4\1#g' file
试试这样?
0
你好,是这样书后我看给了一个参考答案,但是我看不懂,答案是这样的 sed 's#\(^[a-zA-Z][a-zA-Z]*\)\([^a-zA-Z].*\)\([^a-zA-Z]\)\([a-zA-Z][a-zA-Z]*$\)#\4\2\3\1#' file
我不明白的地方有:
不明白这中间为什么写了两次\([^a-zA-Z].*\)\([^a-zA-Z]\),这两个括号中都的意思都是非字母开头的类型,只是一个多了任意字符。
能帮忙解释一下吗?
maria 发表于 2016-6-8 12:15
你这样只是首尾字母互换了,并没有达到他的要求:首尾单词互换
你好,是这样书后我看给了一个参考答案,但是我看不懂,答案是这样的 sed 's#\(^[a-zA-Z][a-zA-Z]*\)\([^a-zA-Z].*\)\([^a-zA-Z]\)\([a-zA-Z][a-zA-Z]*$\)#\4\2\3\1#' file
我不明白的地方有:
不明白这中间为什么写了两次\([^a-zA-Z].*\)\([^a-zA-Z]\),这两个括号中都的意思都是非字母开头的类型,只是一个多了任意字符。
能帮忙解释一下吗?
0
{:6_137:}其实这个和我那个差不多的。都是指明了单词之间的间隔
我的这个是用[[:space:]]表示的,你说的参考答案是用非字母表示的
简单举个例子
file里的字母为abc defg hij klmn opq rst uvw xyz
目的就是'abc'和'xyz'互换
我的语句是把'abc'看成一个整体,'defg hij klmn opq rst uvw'为一个整体,'xyz'看着一个整体,间隔用[[:space:]]表示,也就是空格
你说的参考答案是把'abc'看成一个整体,' defg hij klmn opq rst uvw'为一个整体,''为一个整体,'xyz'看着一个整体
所以他的\([^a-zA-Z].*\)表示的就是' defg hij klmn opq rst uvw',也就是abc后的一个空格一直到倒数第二个单词的内容
后面的\([^a-zA-Z]\)表示的就是' ',也就是最后一个单词之前的一个空格。
不知道这么解释你明白了没?
jackwolf 发表于 2016-6-8 14:09
你好,是这样书后我看给了一个参考答案,但是我看不懂,答案是这样的 sed 's#\(^[a-zA-Z][a-zA-Z]*\)\([ ...
{:6_137:}其实这个和我那个差不多的。都是指明了单词之间的间隔
我的这个是用[[:space:]]表示的,你说的参考答案是用非字母表示的
简单举个例子
file里的字母为abc defg hij klmn opq rst uvw xyz
目的就是'abc'和'xyz'互换
我的语句是把'abc'看成一个整体,'defg hij klmn opq rst uvw'为一个整体,'xyz'看着一个整体,间隔用[[:space:]]表示,也就是空格
你说的参考答案是把'abc'看成一个整体,' defg hij klmn opq rst uvw'为一个整体,''为一个整体,'xyz'看着一个整体
所以他的\([^a-zA-Z].*\)表示的就是' defg hij klmn opq rst uvw',也就是abc后的一个空格一直到倒数第二个单词的内容
后面的\([^a-zA-Z]\)表示的就是' ',也就是最后一个单词之前的一个空格。
不知道这么解释你明白了没?
0
经过你这么一解释,我突然明白了,多谢多谢
{:4_95:}
maria 发表于 2016-6-8 15:03
其实这个和我那个差不多的。都是指明了单词之间的间隔
我的这个是用[[:space:]]表示的,你说的 ...
经过你这么一解释,我突然明白了,多谢多谢
{:4_95:}
编辑回复