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

  免費注冊 查看新帖 |

Chinaunix

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

[文本處理] sed 多條件匹配插入行問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-08-29 18:55 |只看該作者 |倒序瀏覽
本帖最后由 rabbitkn 于 2013-08-29 19:23 編輯

文件中包含如下內容,行數不固定 test.conf

#     1 condition
#     2 condition

       4 condition

       5 other


如何在非#注釋行匹配存在condition的行,并且在匹配的行前插入新行;

sed -n '/^#/!{/condition/{p};}' test.conf

可以找到匹配行,但怎么在找到的行前插入一行?

sed '/^#/!{/condition/{i\ 3 condition};};' -i  test.conf

sed: -e expression #1, char 0: unmatched `{'
不行啊

論壇徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16賽季CBA聯賽之北京
日期:2016-07-06 15:42:0715-16賽季CBA聯賽之同曦
日期:2016-06-12 10:38:0915-16賽季CBA聯賽之佛山
日期:2016-05-27 11:54:56黃金圣斗士
日期:2015-12-02 11:44:35白銀圣斗士
日期:2015-11-25 14:32:43白銀圣斗士
日期:2015-11-23 12:53:352015亞冠之布里斯班獅吼
日期:2015-10-21 16:55:482015亞冠之首爾
日期:2015-09-01 16:46:052015亞冠之德黑蘭石油
日期:2015-08-31 11:39:192015亞冠之薩濟拖拉機
日期:2015-08-28 21:06:5315-16賽季CBA聯賽之廣東
日期:2016-07-12 14:58:53
2 [報告]
發(fā)表于 2013-08-29 19:09 |只看該作者
本帖最后由 reyleon 于 2013-08-29 19:10 編輯
  1. sed '/^#/!i\newline'
復制代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2013-08-29 19:21 |只看該作者
還有其他行的,列出的只是示例其中幾行;
sed '/^#/!i\newline' 只是匹配行首無#的所有行;還要有condition匹配條件;

論壇徽章:
6
摩羯座
日期:2013-08-24 10:43:10獅子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午馬
日期:2014-09-28 16:06:0015-16賽季CBA聯賽之八一
日期:2016-12-19 13:55:0515-16賽季CBA聯賽之天津
日期:2016-12-20 14:01:23
4 [報告]
發(fā)表于 2013-08-29 19:35 |只看該作者
@rabbitkn
  1. sed '/^[^#].*condition.*/i\newline' file
復制代碼

論壇徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16賽季CBA聯賽之北京
日期:2016-07-06 15:42:0715-16賽季CBA聯賽之同曦
日期:2016-06-12 10:38:0915-16賽季CBA聯賽之佛山
日期:2016-05-27 11:54:56黃金圣斗士
日期:2015-12-02 11:44:35白銀圣斗士
日期:2015-11-25 14:32:43白銀圣斗士
日期:2015-11-23 12:53:352015亞冠之布里斯班獅吼
日期:2015-10-21 16:55:482015亞冠之首爾
日期:2015-09-01 16:46:052015亞冠之德黑蘭石油
日期:2015-08-31 11:39:192015亞冠之薩濟拖拉機
日期:2015-08-28 21:06:5315-16賽季CBA聯賽之廣東
日期:2016-07-12 14:58:53
5 [報告]
發(fā)表于 2013-08-29 19:58 |只看該作者
回復 3# rabbitkn


    沒看清題目,那可以這樣子:
  1. sed '/^#/!ba;b;:a;/condition/i\3 condition'
復制代碼

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
6 [報告]
發(fā)表于 2013-08-29 20:00 |只看該作者

  1. sed '/^#/{p;d};/condition/i xxx' file
復制代碼

論壇徽章:
0
7 [報告]
發(fā)表于 2013-08-29 20:31 |只看該作者
回復 4# cao627
經測試,這個可以滿足要求;


   

論壇徽章:
0
8 [報告]
發(fā)表于 2013-08-29 20:34 |只看該作者
reyleon 發(fā)表于 2013-08-29 19:58
回復 3# rabbitkn


這個也可以滿足要求,有點看不懂,能否解釋下
ba;b;:a;什么意思?

論壇徽章:
6
摩羯座
日期:2013-08-24 10:43:10獅子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午馬
日期:2014-09-28 16:06:0015-16賽季CBA聯賽之八一
日期:2016-12-19 13:55:0515-16賽季CBA聯賽之天津
日期:2016-12-20 14:01:23
9 [報告]
發(fā)表于 2013-08-29 20:46 |只看該作者
回復 7# rabbitkn
  1. sed '/^[^#].*condition.*/i\newline' file
復制代碼
這個是有問題的。如果一行以condition開頭,即condition之前沒有任何字符,雖然滿足 沒有#,和有condition這兩個條件 ,但不會被匹配到。
  1. sed '/^[^#].*condition\|^condition/i\newline' file
復制代碼

論壇徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16賽季CBA聯賽之北京
日期:2016-07-06 15:42:0715-16賽季CBA聯賽之同曦
日期:2016-06-12 10:38:0915-16賽季CBA聯賽之佛山
日期:2016-05-27 11:54:56黃金圣斗士
日期:2015-12-02 11:44:35白銀圣斗士
日期:2015-11-25 14:32:43白銀圣斗士
日期:2015-11-23 12:53:352015亞冠之布里斯班獅吼
日期:2015-10-21 16:55:482015亞冠之首爾
日期:2015-09-01 16:46:052015亞冠之德黑蘭石油
日期:2015-08-31 11:39:192015亞冠之薩濟拖拉機
日期:2015-08-28 21:06:5315-16賽季CBA聯賽之廣東
日期:2016-07-12 14:58:53
10 [報告]
發(fā)表于 2013-08-29 20:48 |只看該作者

回復 8# rabbitkn


我也不知道咋解釋,姑且看下:

  1. sed '/^#/!ba;b;:a;/condition/i\3 condition'

  2. man sed 中是這么說的:
  3.        b label
  4.               Branch to label; if label is omitted, branch to end of script.
  5. b命令姑且理解為一個無條件跳轉命令,后面接定義的標簽,如果沒有接標簽,就跳轉到腳本的末尾,也可以理解為忽略后面的代碼

  6. 1. 表示如果不是以#開頭的行,就跳轉到標簽a處,然后接著執(zhí)行后續(xù)的命令,也就是執(zhí)行/condition/i\3 condition 這一段代碼了,自然如果行匹配condition就插入一行咯;
  7. 2. 如果是以#開頭的行,那么ba命令不會執(zhí)行,接著往下走,執(zhí)行到了b命令,因為b命令后沒有接標簽,,就跳轉到腳本的末尾了,不會執(zhí)行到/condition/i\3 condition,默認就打印這一行咯
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP