亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4979 | 回復: 18
打印 上一主題 下一主題

1,$s/\(.*\) \(.*\)/$2--$1/g [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-12-02 22:02 |只看該作者 |倒序瀏覽
10可用積分
abcde  ABCED
beijing  BEIJING


如果運行如下命令:
1,$s/\(.*\) \(.*\)/\2--\1/g

則結果為:

ABCED--abcde
BEIJING--beijing


請哪位能幫我具體解釋一下這個正則表達式嗎?謝謝!

最佳答案

查看完整內容

天啊,這就10分,我來吧\(.*\) \(.*\).表示任意字符,*表示任意多個前面的字符,包括零個(注意有貪婪性,就是有多少吃多少,只要符合條件)\(.*\)是將括號里面的用標簽標記起來,按出現(xiàn)的順序依次為1,2,3...,可以用\1,\2...來提取所以\(.*\) \(.*\)就表示,"幾個任意字符"+"一個空格"+"幾個字符"的形式字符串,而1,$s/\(.*\) \(.*\)/\2--\1/g這句sed語句就是將1行到結束行的,符合上述條件的字符串,替換成"第二段字符"--"第一段 ...

論壇徽章:
0
2 [報告]
發(fā)表于 2009-12-02 22:02 |只看該作者
天啊,這就10分,我來吧
\(.*\) \(.*\)
.表示任意字符,
*表示任意多個前面的字符,包括零個(注意有貪婪性,就是有多少吃多少,只要符合條件)
\(.*\)是將括號里面的用標簽標記起來,按出現(xiàn)的順序依次為1,2,3...,可以用\1,\2...來提取
所以\(.*\) \(.*\)就表示,"幾個任意字符"+"一個空格"+"幾個字符"的形式字符串,
而1,$s/\(.*\) \(.*\)/\2--\1/g這句sed語句就是將1行到結束行的,符合上述條件的字符串,替換成"第二段字符"--"第一段字符"的形式

明白沒?

[ 本帖最后由 haimming 于 2009-12-2 22:12 編輯 ]

論壇徽章:
1
榮譽會員
日期:2011-11-23 16:44:17
3 [報告]
發(fā)表于 2009-12-02 22:14 |只看該作者

回復 #1 reneyangs 的帖子


  1. 1,$s/\(.*\) \(.*\)/\2--\1/g

  2. 1,$ 表示第一行到最后一行,可以省去
  3. s/
  4. \(.*\) \(.*\) 括號需要“\”來轉義,實際就是(.*) (.*),對于第一行abcde ABCED來說就是(abcde) (ABCED),那么\1就是abcde,\2就是ABCED
  5. /\2--\1/g
復制代碼

論壇徽章:
1
榮譽會員
日期:2011-11-23 16:44:17
4 [報告]
發(fā)表于 2009-12-02 22:15 |只看該作者

回復 #2 haimming 的帖子

你好快啊

論壇徽章:
0
5 [報告]
發(fā)表于 2009-12-02 22:16 |只看該作者

回復 #2 haimming 的帖子

那我如果要匹配(,不是也需要加一個\(的么?
這兩種如何區(qū)分?

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
6 [報告]
發(fā)表于 2009-12-02 22:17 |只看該作者
原帖由 haimming 于 2009-12-2 22:10 發(fā)表
天啊,這就10分,我來吧



論壇徽章:
0
7 [報告]
發(fā)表于 2009-12-02 22:25 |只看該作者

回復 #5 reneyangs 的帖子

這要看sed了,如果sed加了-r參數,可以像beginner-bj 說的那樣
sed -r 's/(.*) (.*)/\2--\1/g',而這里要匹配"("和")"是要轉義的
相反,如果不加就要寫成sed 's/\(.*\) \(.*\)/\2--\1/g',這時匹配"("和")"是不需要轉義,直接來就是
[rockfall@Rocfall ~/tmp/sh/A]$echo "a(b"|sed 's/(/--/'
a--b
[rockfall@Rocfall ~/tmp/sh/A]$echo "a(b"|sed -r 's/(/--/'
sed: -e expression #1, char 7: Unmatched ( or \(
[rockfall@Rocfall ~/tmp/sh/A]$echo "a(b"|sed -r 's/\(/--/'
a--b

[ 本帖最后由 haimming 于 2009-12-2 22:35 編輯 ]

論壇徽章:
0
8 [報告]
發(fā)表于 2009-12-02 22:36 |只看該作者

回復 #7 haimming 的帖子

那我如果在vi命令模式下,使用 :1,$s/(.*) (.*)/\2--\1/g,似乎不行?

論壇徽章:
0
9 [報告]
發(fā)表于 2009-12-02 22:49 |只看該作者

回復 #8 reneyangs 的帖子

vi里應該用你第一種的形式,
不過估計也能設置成這種,沒怎么用vi不會

論壇徽章:
1
榮譽會員
日期:2011-11-23 16:44:17
10 [報告]
發(fā)表于 2009-12-02 22:50 |只看該作者
原帖由 haimming 于 2009-12-2 22:10 發(fā)表
天啊,這就10分,我來吧
\(.*\) \(.*\)
.表示任意字符,
*表示任意多個前面的字符,包括零個(注意有貪婪性,就是有多少吃多少,只要符合條件)
\(.*\)是將括號里面的用標簽標記起來,按出現(xiàn)的順序依次為1,2, ...

哈哈, 這10分好掙8?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP