对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, 则不替换。

 

sed 的这些功能,用awk 也可以很轻易的实现, 推荐awk. awk 按列分割很方便.

 

 

你可能感兴趣的:(#,linux,基础知识,c)