sh/bash/dash/ksh/zsh等Shell脚本
-
bfdxw
- 帖子: 9
- 注册时间: 2009-09-19 9:13
#1
帖子
由 bfdxw » 2009-09-20 13:39
我有一个文本文件格式是
代码: 全选
aaaa bbbb cccc dddd
darw opqq eeee cdrr
hymi yybb eeee powq
...
rdaw poqa eeee adsq
dddd cccc bbbb aaaa
如果第三列连续相同超过10行
就把这几行删除(不管多少行,只要超过10行就删除)
这个怎么写啊,awk真难学
-
O_O_BOT
- 帖子: 2461
- 注册时间: 2009-05-20 19:32
#2
帖子
由 O_O_BOT » 2009-09-20 16:56
代码: 全选
#!/usr/bin/awk -f
BEGIN {
prev3 = "";
cache = "";
prevcnt = 0;
}
{
if ($3 != prev3 ) {
if (prevcnt <= 10 && cache != "") {
print cache;
}
prev3 = $3;
prevcnt = 1;
cache = $0;
} else {
cache = cache "\n" $0;
prevcnt++;
}
}
END {
if (prevcnt <= 10) {
print cache;
}
}
-
bfdxw
- 帖子: 9
- 注册时间: 2009-09-19 9:13
#3
帖子
由 bfdxw » 2009-09-20 17:26
LS真是热心人
太感谢了
最后一个问题,呃..我还有一个文本文件(我文本文件咋就这么多呢)
[abc] [def] [ghi] [jkl]
我用
awk {print$2}以后得到[def]
但是我不想要括号
能不能不用管道,awk一句话做出来得到def
-
bfdxw
- 帖子: 9
- 注册时间: 2009-09-19 9:13
#4
帖子
由 bfdxw » 2009-09-20 17:55
自己解决了...

-
O_O_BOT
- 帖子: 2461
- 注册时间: 2009-05-20 19:32
#5
帖子
由 O_O_BOT » 2009-09-20 18:06
echo '[abc] [def] [ghi]' | awk '{print gensub(/\[(.*)\]/,"\\1","1",$2)}
echo '[abc] [def] [ghi]' | awk '{gsub(/[][]/,"",$2);print $2}'
或者改IFS
echo '[abc] [def] [ghi]' | awk -F'[][]' '{print $4}'
-
tusooa
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
-
联系:
#6
帖子
由 tusooa » 2009-11-15 13:20
代码: 全选
awk '{print $2}' | sed -e '^[/s [ g' -e ']$/s ] g'