又有一个问题要请教大家

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

Re: 又有一个问题要请教大家

#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;
    }
}
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
bfdxw
帖子: 9
注册时间: 2009-09-19 9:13

Re: 又有一个问题要请教大家

#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

Re: 又有一个问题要请教大家

#4

帖子 bfdxw » 2009-09-20 17:55

自己解决了... :em06
头像
O_O_BOT
帖子: 2461
注册时间: 2009-05-20 19:32

Re: 又有一个问题要请教大家

#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}'
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
[url]irc://irc.freenode.net/ubuntu-cn[/url]
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 又有一个问题要请教大家

#6

帖子 tusooa » 2009-11-15 13:20

代码: 全选

awk '{print $2}' | sed -e '^[/s [  g' -e ']$/s ]  g'

代码: 全选

] ls -ld //
回复