LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1004|回复: 5

高难度的格式整理问题

[复制链接]
发表于 2007-12-20 17:49:13 | 显示全部楼层 |阅读模式
高难度的格式整理问题
这里都挺好,会自动帮我整理格式,呵呵,原意是mNode_CFLAG 每一个-I一行,但写的不整齐,可能多几个空格,少几个空格,或者某行是两个tab,某行是三个tab
     MNODE_PATH              = $(top_srcdir)
VENDOR_PATH             = $(top_srcdir)/../vendor

noinst_PROGRAMS = mNode
mNode_CFLAGS = \
                -I.. -I../..\
       -I$(MNODE_PATH)/gan \
                        -I$(MMX_PATH) \
              -I$(VENDOR_PATH) \
-I$(MMX_PATH)/common \
                                -I$(MMX_PATH)/mxLog \
                                                        -I$(MMX_PATH)/mxLog/inc \
       -I$(MMX_PATH)/oam/src/evm/inc \           
    -I$(MMX_PATH)/commMgr/commLib/inc  \
                -I$(MNODE_PATH)/gan/ganms \
                -I$(MNODE_PATH)/gan/gannet \
                -I$(MNODE_PATH)/gan/common \
                -I$(MNODE_PATH)/gan/gprsBridge \
                -DLINUX -D_REENTRANT

要求整理以后变成以下:
MNODE_PATH              = $(top_srcdir)
VENDOR_PATH             = $(top_srcdir)/../vendor

noinst_PROGRAMS = mNode
mNode_CFLAGS = \
                -I.. -I../..\
                -I$(MNODE_PATH)/gan \
                -I$(MMX_PATH) \
                -I$(VENDOR_PATH) \
                -I$(MMX_PATH)/common \
                -I$(MMX_PATH)/mxLog \
                -I$(MMX_PATH)/mxLog/inc \
                -I$(MMX_PATH)/oam/src/evm/inc \
                -I$(MMX_PATH)/commMgr/commLib/inc  \
                -I$(MNODE_PATH)/gan/ganms \
                -I$(MNODE_PATH)/gan/gannet \
                -I$(MNODE_PATH)/gan/common \
                -I$(MNODE_PATH)/gan/gprsBridge \
                -DLINUX -D_REENTRANT

mNode_CXXFLAGS = \
发表于 2007-12-20 20:25:02 | 显示全部楼层
  1. sed 's/^[[:blank:]]*-I/-I/'
复制代码

解释:
把以开头的有效字符为-I的行中的前导空白符删除
[[:blank:]]*表示任意连续的空白符
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-21 10:53:59 | 显示全部楼层
springwind426
我用如下语句做了,但还有两个问题
sed  -i  '{:a;N;/\\$/ba;N;s/\(\s*\)\(\t*\)\([^\n]*\n\)/\t\t\t\3/g}' xx

1.最好一行不会处理,如题目中的-DLINUX -D_REENTRANT
2.第一行不应该处理,如题目中的mNode_CFLAGS = \,结果也被前面多出了三个tab

请帮我改一下,谢谢
回复 支持 反对

使用道具 举报

发表于 2007-12-21 14:46:37 | 显示全部楼层
看看这个是否符合你的要求
  1. sed 's/^[[:blank:]]*-I/\t\t\t-I/'
复制代码

把以开头的有效字符为-I的行中的前导空白符删除,然后在-I前面添加3个TAB符
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-21 15:07:14 | 显示全部楼层
不一定是-I开头的,便一定是分行的那种才会缩进,就是后面是"\"符号的,下一行一定缩进,
问题就是原来手写的,有很多很多,缩进的空格或者tab不一样多,很难看,所以相办法整理一下
回复 支持 反对

使用道具 举报

发表于 2007-12-23 13:31:29 | 显示全部楼层
你是不是想达到这个效果?
  1. sed 's/^[[:blank:]]*\(-I.*\\\)$/\t\t\t\1/'
复制代码

这个只对那些是处于分行状态下的-I 才处理
思路是,只有以多个空白符+-I 开头,并且是以\结尾的行才处理。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表