awk脚本消除特殊字符

时间:2015-06-13 01:26:08

标签: awk

我的输出如下所示

judi# *diff -C 0 $* mountYday mountTday
*** mountYday   Sat Jun 13 02:57:09 2015
--- mountTday   Sat Jun 13 02:59:49 2015
***************
*** 20 ****
- /test on /dev/vx/dsk/test/test read/write/setuid/devices/intr/largefiles/logging/xattr/onerror=panic/dev=48986a5 on Wed Apr 22 22:28:04 2015
--- 19 ----
judi#

我只需要从单个" - "开始。 输出应为

- /test on /dev/vx/dsk/test/test read/write/setuid/devices/intr/largefiles/logging/xattr/onerror=panic/dev=48986a5 on Wed Apr 22 22:28:04 2015

我可以使用awk消除前两行:

*# diff -C 0 $* mountYday mountTday | awk '! /mount/'*

***************
*** 20 ****
- /ora03/oradata1 on /dev/vx/dsk/GRPA056L/ora03-oradata1 read/write/setuid/devices/intr/largefiles/logging/xattr/onerror=panic/dev=48986a5 on Wed Apr 22 22:28:04 2015
--- 19 ----

如何删除行以***---(正好3 ***---)和***************(15个字符)开头?我在单一命令中尝试使用awk。

1 个答案:

答案 0 :(得分:2)

不是删除你不想要的字符,而是找到你想要的字符的命令怎么样?你想要的线是"线的起点,后面跟一个 - ,然后是空格"。

$  diff -C 0 $* mountYday mountTday | awk /- / {print $0}

这种模式提取更适合grep:

$  diff -C 0 $* mountYday mountTday | grep '^- '