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

Chinaunix

標(biāo)題: 如何刪除指定行之間的匹配行? [打印本頁(yè)]

作者: oniziga    時(shí)間: 2013-11-25 09:30
標(biāo)題: 如何刪除指定行之間的匹配行?
本帖最后由 oniziga 于 2013-11-26 14:17 編輯

有如下的文本內(nèi)容:
/dev/md1
1122 0:12 m
1233 0:11 m
1234 0:13 m
/dev/md2
1122 0:1 m
1567 0:2 m
1678 0:3 m

要?jiǎng)h除/dev/md1和/dev/md2之間的這個(gè)1122這行,而不是刪除/dev/md2下面這個(gè)1122.


++++++++++++++++++++++++++++++++++++++++++++++++++++++++

之前問(wèn)題解決了,繼續(xù)追問(wèn),如果要輸出/dev/md1到下一個(gè)/dev/mdx之間行的第二列呢?
例子中就是
1122 0:12 m
1233 0:11 m
1234 0:13 m


作者: oniziga    時(shí)間: 2013-11-25 09:34
sed  ‘/md1/, /md2/1122d' file提示有語(yǔ)法錯(cuò)誤
作者: yestreenstars    時(shí)間: 2013-11-25 09:36
  1. [root@localhost ~]# sed '\%/dev/md1%,\%/dev/md2%{/^1122 /d}' i
  2. /dev/md1
  3. 1233 0:11 m
  4. 1234 0:13 m
  5. /dev/md2
  6. 1122 0:1 m
  7. 1567 0:2 m
  8. 1678 0:3 m
  9. [root@localhost ~]# cat i
  10. /dev/md1
  11. 1122 0:12 m
  12. 1233 0:11 m
  13. 1234 0:13 m
  14. /dev/md2
  15. 1122 0:1 m
  16. 1567 0:2 m
  17. 1678 0:3 m
  18. [root@localhost ~]#
復(fù)制代碼

作者: 關(guān)陰月飛    時(shí)間: 2013-11-25 09:37
回復(fù) 1# oniziga
  1. awk '/\/dev\/md1/,/\/dev\/md2/{if(!/1122/)print;next}1' file
復(fù)制代碼

作者: 秋天的絮兒    時(shí)間: 2013-11-25 09:38
  1. sed -i '0,/^1122/{/^1122/d}' file
復(fù)制代碼

作者: 秋天的絮兒    時(shí)間: 2013-11-25 09:38
  1. sed -i '0,/^1122/{/^1122/d}' file
復(fù)制代碼

作者: bianlimit    時(shí)間: 2013-11-25 09:38
  1. [root@FW tmp]# sed -e "/^\/dev\/md1/,/1122/d" aaa
  2. 1233 0:11 m
  3. 1234 0:13 m
  4. /dev/md2
  5. 1122 0:1 m
  6. 1567 0:2 m
  7. 1678 0:3 m
復(fù)制代碼

作者: 秋天的絮兒    時(shí)間: 2013-11-25 09:38
  1. sed -i '0,/^1122/{/^1122/d}' file
復(fù)制代碼

作者: 秋天的絮兒    時(shí)間: 2013-11-25 09:41
刷新了一下怎么出現(xiàn)這么多啊?能不能刪除。
作者: oniziga    時(shí)間: 2013-11-25 09:42
謝謝樓上的,關(guān)鍵是{/1111/d}原來(lái)要用大括號(hào)括起來(lái)。
作者: q1208c    時(shí)間: 2013-11-25 09:44
樓主如果只是要簡(jiǎn)單的刪除這一行, vi一下就可以了呀, 有這么麻煩么?
作者: 這個(gè)冬天不冷    時(shí)間: 2013-11-25 09:48
  1. :/md1/,/md2/g/1122/d
  2. 不知vim行不
復(fù)制代碼

作者: 零下五度_    時(shí)間: 2013-11-25 10:53
回復(fù) 4# 關(guān)陰月飛

想請(qǐng)問(wèn)下這行代碼next后面的1是什么意思?謝謝


   
作者: 關(guān)陰月飛    時(shí)間: 2013-11-25 10:57
回復(fù) 13# 零下五度_

  基礎(chǔ)中的基礎(chǔ):
    1==》 1{print $0} ==> {print $0}  
作者: 零下五度_    時(shí)間: 2013-11-25 11:20
回復(fù) 14# 關(guān)陰月飛

謝謝。


   
作者: fantingftt123    時(shí)間: 2013-11-26 00:00
回復(fù) 3# yestreenstars
lz,這里的%是什么意思。

   
作者: yestreenstars    時(shí)間: 2013-11-26 09:07
回復(fù) 16# fantingftt123
  1. /REGEXP/    等價(jià)于    \%REGEXP%

  2. %可以換成其他的符號(hào),比如!、@、#、$等

  3. 因?yàn)闃侵饕ヅ涞膬?nèi)容里包含了斜桿,所以直接用//需要多次轉(zhuǎn)義,而用其他符號(hào)則可避免這種情況。
復(fù)制代碼

作者: oniziga    時(shí)間: 2013-11-26 14:29
頂上去:wink::wink::wink::wink::wink::wink:
作者: oniziga    時(shí)間: 2013-11-26 14:34
自己搞定了:
sed  -n '/md1/,/md/{/md1/n;/md/b;p}' file | awk ’{print $2}‘

不知道有沒(méi)有更簡(jiǎn)單一點(diǎn)的方法
作者: rulebook    時(shí)間: 2013-11-26 14:43
sed -r '/\/dev\/md1/,/\/dev\/md2/{/1122/d}'
作者: jason680    時(shí)間: 2013-11-26 14:56
回復(fù) 1# oniziga

How about this one and  maintain it easily

$ awk -vD=/dev/md1 -vT=1122 'NF==1{dev=$1}D==dev{P=($1==T)?1:0}!P' FILE
/dev/md1
1233 0:11 m
1234 0:13 m
/dev/md2
1122 0:1 m
1567 0:2 m
1678 0:3 m

   
作者: fantingftt123    時(shí)間: 2013-11-29 20:57
回復(fù) 3# yestreenstars
lz,那%前面的那個(gè)\是對(duì)%這個(gè)符號(hào)進(jìn)行轉(zhuǎn)義,那后面那個(gè)%不需要嗎?


   
作者: yestreenstars    時(shí)間: 2013-11-29 22:48
回復(fù) 22# fantingftt123
不需要,參考info sed~

   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2