亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: awk能否實現(xiàn)這些功能 [打印本頁]

作者: hgfa    時間: 2005-08-10 07:26
標題: awk能否實現(xiàn)這些功能
1.能否實現(xiàn)在一個文件里查找符合特定字符串的一行,然后把其前面第5行和后面第5行之間的一段內(nèi)容插入到另一個文件同樣符合這個字符串的一行其前面第5行之前.(好繞口啊,不知道我說清楚了沒有)
2.awk里可不可以用變量做文件名.
作者: 寂寞烈火    時間: 2005-08-10 07:58
標題: awk能否實現(xiàn)這些功能
1,取一定范圍的數(shù)據(jù)用sed,awk,grep均可!
2,可以!
3,見置頂shell基礎(chǔ)十二篇
作者: viton_xuan    時間: 2005-08-10 11:55
標題: awk能否實現(xiàn)這些功能
一行其前面第5行之前
我試了一下發(fā)現(xiàn)awk可以,但是方法太繁瑣,顯示不出awk的優(yōu)勢,想問烈火有沒有什么簡便的方法可以實現(xiàn),如果用sed我只知道一行一行的處理,他需要匹配之后在前幾行插入,想請問該怎么辦?
awk實現(xiàn)方法(想問有沒有簡單點的方法)
BEGIN{
        found = 0;
        ind=0;
        collected = 6;
        insert_point = -1;
        line_file1 = 0;
        string = ARGV[1];
        delete ARGV[1];
}
{if(NR == FNR && found == 0){
        if ($0 !~ string)
        {
                table[ind] = $0;
                ind = (ind+1)%11;
        }
        else
        {
                found = 1;
                table[ind] = $0;
                ind = (ind+1)%11;
                printf("%d %s\n",ind,$0);
        }
}
else if (NR == FNR && found == 1)
{
        if (collected < 11)
        {
                table[ind] = $0;
                ind = (ind+1)%11;
                collected++;       
        }
        line_file1 = NR;
}
else
{
        output[FNR-1] = $0;
        if ($0 ~ string)
        {
                insert_point = FNR;
                printf("insert point:%d\n",insert_point);
        }
}
}
END{
        if (found == 0)
        {
                print("not found in file1\n";
                exit;
        }
        if (insert_point == -1)
        {
                print("not found in file2\n";
                exit;
        }
        printf("%d %d\n",NR,line_file1);
        for (i = 0; i < NR - line_file1; i++)
        {
                if(i == insert_point - 6)       
                {
                        for(j = 0; j < collected; j++)
                        {
                                ind = (ind == 0? 10: ind-1);
                                printf("%s\n",table[ind]);
                        }
                }
                printf("%s\n",output);
        }
}
作者: 寂寞烈火    時間: 2005-08-10 12:21
標題: awk能否實現(xiàn)這些功能
用grep試試
grep -A5 -B5 'pattern' file #搜索pattern的前5行到后5行
作者: waker    時間: 2005-08-10 12:24
標題: awk能否實現(xiàn)這些功能
awk '{a[NR]=$0}
/pattern/{c++}
c{c++}
c==7{for (i=NR-10;i<=NR;i++) print a;exit} ' file

上下5行
作者: hgfa    時間: 2005-08-10 19:37
標題: awk能否實現(xiàn)這些功能
謝謝各位的幫助.。有了各位的回復(fù)我就不怕白忙活了。
最近剛從網(wǎng)上郵購了一本《sed與awk》,發(fā)現(xiàn)以我得水平很難在短時間內(nèi)看懂。看來想在工作中省點兒力氣也不容易呀。
作者: icesummit    時間: 2005-08-10 22:47
標題: awk能否實現(xiàn)這些功能
原帖由 "hgfa" 發(fā)表:
謝謝各位的幫助.。有了各位的回復(fù)我就不怕白忙活了。
最近剛從網(wǎng)上郵購了一本《sed與awk》,發(fā)現(xiàn)以我得水平很難在短時間內(nèi)看懂?磥硐朐诠ぷ髦惺↑c兒力氣也不容易呀。

那本書講的很細,認真看完了功力一定會大漲。如果向快速入門的話,還是看看sed1line,遇到不懂的地方,去查查《sed與awk》,這樣也挺好。
作者: viton_xuan    時間: 2005-08-12 13:25
標題: awk能否實現(xiàn)這些功能
waker斑竹果然厲害,寫的非常精簡,那如果要把他放到另外一個文件匹配字符串前面五行的之前,那又有沒有什么簡便的寫法呢
另外烈火兄,solaris下grep是不是沒有-A -B的參數(shù)呢,我好像沒能找到啊
作者: ZealeS    時間: 2005-08-12 13:57
標題: awk能否實現(xiàn)這些功能
[quote]原帖由 "waker"]......上下5行[/quote 發(fā)表:


如果剛好在文件頭五行內(nèi)或尾都會出現(xiàn)增加的空行。最好加多個判斷,文件頭就不用一定取五行了。

  1. awk '{a[NR]=$0;
  2.       if($0~/pattens/) {
  3.         if(NR-5 > 0) n=(NR-5); else n=1;
  4.         for(i=n; i<=NR; i++) print a[i];
  5.         ln=0;
  6.         while(getline && ln<5) {print; ln++;}
  7.       }}' filename
復(fù)制代碼

作者: thzhsxw    時間: 2005-08-12 14:49
標題: awk能否實現(xiàn)這些功能
????




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2