删除列
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: 删除列
kose3@kose3-laptop:~$ cat 1.t
1 2 3 5 1
2 0 a 3 4 5
1 0 2 3 a 4
1 2 4 5 4
1 3 2 a 4
1 2 0 30 5
1 10 30 5
kose3@kose3-laptop:~$ sed -r 's/^(\S+)\s\S*0\S*/\1/' 1.t
1 2 3 5 1
2 a 3 4 5
1 2 3 a 4
1 2 4 5 4
1 3 2 a 4
1 2 0 30 5
1 30 5
1 2 3 5 1
2 0 a 3 4 5
1 0 2 3 a 4
1 2 4 5 4
1 3 2 a 4
1 2 0 30 5
1 10 30 5
kose3@kose3-laptop:~$ sed -r 's/^(\S+)\s\S*0\S*/\1/' 1.t
1 2 3 5 1
2 a 3 4 5
1 2 3 a 4
1 2 4 5 4
1 3 2 a 4
1 2 0 30 5
1 30 5
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系:
Re: 删除列
这样老老实实的C写法可能性能会高点...
突然想起来awk的sub...针对第2列的话语句会很短
都是hardcode...要是awk有cut -f3-这样好用的操作符就好了...
代码: 全选
awk '$2 == "0" {printf $1; for (i=3; i<=NF; i++) {printf(" %s", $i)}; print "";next}1'
代码: 全选
awk '$2 == "0" {sub($1" 0", $1, $0)}1'
代码: 全选
awk '$2 == "0" {printf("%s%s", $1,FS); system("echo "$0" | cut -d\""FS"\" -f3-"); next;}1'
Mea Culpa!
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
-
- 帖子: 61
- 注册时间: 2010-04-29 22:00
- 系统: Gentoo Linux ~amd64
- 联系:
-
- 帖子: 108
- 注册时间: 2010-12-18 19:46
Re: 删除列
awk '$2 == "0" {printf $1; for (i=3; i<=NF; i++) {printf(" %s", $i)}; print "";next}1'Methuselar 写了:这样老老实实的C写法可能性能会高点...突然想起来awk的sub...针对第2列的话语句会很短代码: 全选
awk '$2 == "0" {printf $1; for (i=3; i<=NF; i++) {printf(" %s", $i)}; print "";next}1'
都是hardcode...要是awk有cut -f3-这样好用的操作符就好了...代码: 全选
awk '$2 == "0" {sub($1" 0", $1, $0)}1'
代码: 全选
awk '$2 == "0" {printf("%s%s", $1,FS); system("echo "$0" | cut -d\""FS"\" -f3-"); next;}1'
中的,最后面的1 表示什么意思??
keep the faith
- Ubuntu与Linux
- 帖子: 1211
- 注册时间: 2010-06-09 19:57
- Methuselar
- 帖子: 122
- 注册时间: 2009-06-04 12:06
- 联系: