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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 2009 | 回復(fù): 9
打印 上一主題 下一主題

[文本處理] Sed - 文本處理 [復(fù)制鏈接]

論壇徽章:
1
白羊座
日期:2013-12-29 17:58:28
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-05-21 10:23 |只看該作者 |倒序?yàn)g覽
我想用sed 來處理這個(gè)文件
  1. < ABC1
  2. > Hello1
  3. > Hello2
  4. < ABC2
  5. > Hello3
  6. < ABC3
  7. > Hello4
  8. > Hello5
  9. > Hello6
  10. > Hello7
復(fù)制代碼
想要的結(jié)果是:
  1. ABC1.Hello1
  2. ABC1.Hello2
  3. ABC2.Hello3
  4. ABC3.Hello4
  5. ABC3.Hello5
  6. ABC3.Hello6
  7. ABC3.Hello7
復(fù)制代碼
我的想法是看到 "<" 就把后面的字段保留, 看到">"后,將保留的字段連上打印,但是好像控制得不對(duì)。
  1. sed '/</{s/< //;H;ta};/>/{N;s/[><]//g;s/\([^\n]*\)\n\([^\n]*\)/\1\.\2/};:a' file
  2. Parent1
  3. Child1. Child2
  4. Parent2
  5. Child3. Parent3
  6. Child4. Child5
  7. Child6. Child7
復(fù)制代碼

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
2 [報(bào)告]
發(fā)表于 2014-05-21 10:26 |只看該作者
回復(fù) 1# newoz
不允許作弊用awk嗎?


   

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
3 [報(bào)告]
發(fā)表于 2014-05-21 10:28 |只看該作者
我想用awk來處理這個(gè)問題:
  1. [root@ awktest]# cat file
  2. < ABC1
  3. > Hello1
  4. > Hello2
  5. < ABC2
  6. > Hello3
  7. < ABC3
  8. > Hello4
  9. > Hello5
  10. > Hello6
  11. > Hello7
  12. [root@ awktest]# awk '/</{a=$2;next}{print a"."$2}'  file
  13. ABC1.Hello1
  14. ABC1.Hello2
  15. ABC2.Hello3
  16. ABC3.Hello4
  17. ABC3.Hello5
  18. ABC3.Hello6
  19. ABC3.Hello7
復(fù)制代碼

論壇徽章:
1
白羊座
日期:2013-12-29 17:58:28
4 [報(bào)告]
發(fā)表于 2014-05-21 10:31 |只看該作者
awk我也會(huì)啊, 但是用到sed 總是控制不好。

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
5 [報(bào)告]
發(fā)表于 2014-05-21 10:39 |只看該作者
這種問題用awk來做是最簡(jiǎn)單的:
  1. awk '/^</{t=$2;next}{$0=t"."$2}1'
復(fù)制代碼

論壇徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉雞
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥豬
日期:2014-04-22 16:13:09獅子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53處女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [報(bào)告]
發(fā)表于 2014-05-21 10:59 |只看該作者
回復(fù) 1# newoz
sed水平一般,請(qǐng)多指教。
  1. sed -n '/</{h;:1;N;/>/{s/^<\s*//;s/\s*>\s*/./;p;g;b1};/\n</D}' i
  2. ABC1.Hello1
  3. ABC1.Hello2
  4. ABC2.Hello3
  5. ABC3.Hello4
  6. ABC3.Hello5
  7. ABC3.Hello6
  8. ABC3.Hello7
復(fù)制代碼

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
7 [報(bào)告]
發(fā)表于 2014-05-21 11:16 |只看該作者
回復(fù) 1# newoz
  1. sed -nr ':a;$!N;s/(< ([^\n]+))\n> ([^\n]+)/\2.\3\n\1/;/\./P;D;ta'
復(fù)制代碼

論壇徽章:
32
處女座
日期:2013-11-20 23:41:20雙子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00處女座
日期:2014-07-22 17:30:47獅子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥豬
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58處女座
日期:2014-12-02 09:17:52程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
8 [報(bào)告]
發(fā)表于 2014-05-21 11:49 |只看該作者
  1. $ sed -r '/</{s/< //;h};/>/{s/> //;G;s/(.*)\n(.*)/\2.\1/p};d' i
  2. ABC1.Hello1
  3. ABC1.Hello2
  4. ABC2.Hello3
  5. ABC3.Hello4
  6. ABC3.Hello5
  7. ABC3.Hello6
  8. ABC3.Hello7
復(fù)制代碼

論壇徽章:
1
白羊座
日期:2013-12-29 17:58:28
9 [報(bào)告]
發(fā)表于 2014-05-21 12:08 |只看該作者
本帖最后由 newoz 于 2014-05-21 12:12 編輯
yestreenstars 發(fā)表于 2014-05-21 11:49
$ sed -r '/</{s/< //;h};/>/{s/> //;G;s/(.*)\n(.*)/\2.\1/p};d' i


這個(gè)正是我要的,完全按照我的思路。非常感謝。

我其實(shí)已經(jīng)很接近了。 G 和 d 命令很有用。

我自己按照你的思路改正的。
  1. sed '/</{s/< //;h;ta};/>/{G;s/[><] //g;s/\([^\n]*\)\n\([^\n]*\)/\2\.\1/p};:a;d' file
復(fù)制代碼

論壇徽章:
1
白羊座
日期:2013-12-29 17:58:28
10 [報(bào)告]
發(fā)表于 2014-05-21 12:22 |只看該作者
我的命令還可以簡(jiǎn)化
  1. sed '/</{h;ba};G;s/[><] //g;s/\(.*\)\n\(.*\)/\2\.\1/p;:a;d' file
  2. sed -r '/</{h;ba};G;s/[><] //g;s/(.*)\n(.*)/\2\.\1/p;:a;d' file
復(fù)制代碼
這個(gè)相當(dāng)于用sed 來解決 if-then-else 的做法。 應(yīng)該算是比較通用的方法,以后會(huì)有用,特地寫下來。
  1. /</          #  相當(dāng)于 if 的條件判斷
  2. {h;ba};  # 相當(dāng)于  if 的 then 后的命令
  3. G;s/[><] //g;s/(.*)\n(.*)/\2\.\1/p;    # 相當(dāng)于 else后的命令
復(fù)制代碼
謝謝大家,學(xué)到很多。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP