对sed 的深刻理解。

1. 原文:
$ cat 1.txt

app_5     988   55    450088 31632 ffffffff 400113c4 S com.lenovo.tv.appstore


2. 用sed 提取第一列

$ cat 1.txt |sed -e 's/\([^ ]*\) *.*/\1/'


app_5

说明: 要把整行全部匹配,将整行用\1 代替

3. 用sed 提取第2列:
$ cat 1.txt |sed -e 's/[^ ]* *\([0-9]*\).*/\1/'


988

说明: 要把整行全部匹配,将整行用\1 代替

以上两种是常用做法,用以提取有用信息。


4. 用sed 去除第2列

$ cat 1.txt |sed -e 's/\([^ ]*\) *[0-9]*/\1/'


app_5   55    450088 31632 ffffffff 400113c4 S com.lenovo.tv.appstore

说明: sed 不仅可以提取信息,还可以删除信息。

这一次,sed 的左手侧并没有匹配整行,而是匹配一个局部,将匹配到的lhs

用rhs 来代替,这样就去除了不关心的东西,保留了关心的东西,同时未匹配的东西也得到了保留。

达到去除无关信息的目的。



关键点:将匹配到的pattern(lhs) 以 replace(rhs) 替换, 找不到pattern, 则不替换。




你可能感兴趣的:(c)