awk 一特殊用法 - Linux
By Lydia
at 2013-02-22T04:09
at 2013-02-22T04:09
Table of Contents
※ 引述《Sizemore24 (Going deep center)》之銘言:
: 請教各位,現有一檔案,如下格式:
: 111/222
: aaa
: bbb
: ccc
: ccc
: ccc
: 111/333
: aaa
: bbb
: ccc
: ccc
: 111/444
: aaa
: bbb
: 111/555
: aaa
: bbb
: ccc
: 現在想用 awk,達成一效果:
: 「數字/數字」 當要取得的區塊的頭,「數字/數字前最後一個 ccc」 為區塊的尾,
: 此為一完整區塊,印出來。
: 若只有「數字/數字」,卻沒有 ccc 行,就視為不完成區塊,不印。
: 所以印出來會是
: 111/222
: aaa
: bbb
: ccc
: ccc
: ccc
: 111/333
: aaa
: bbb
: ccc
: ccc
: 111/555
: aaa
: bbb
: ccc
: 剛試了好多方法,但判斷何處為區塊內最後一個 ccc?一直有問題,
: 所以想請問大家,有沒有什麼可行的解法?感謝。
: p.s. 願贈送 10000 批幣當感謝最佳解的小心意,雖然很微薄。
試著土法練鋼:
{
test[NR] = $0
if(NR == 1){flag=1}
if ((NR !=1) && ($0 ~ /[0-9][0-9]*\/[0-9][0-9]*/)){
x=NR-1
if(test[x] ~ /ccc/){
for(i=flag;i<NR;i=i+1)
print test[i]
}
flag=NR
}
}
END{
x=NR
if(test[x] ~ /ccc/){
for(i=flag;i<=NR;i=i+1)
print test[i]
}
}
--
: 請教各位,現有一檔案,如下格式:
: 111/222
: aaa
: bbb
: ccc
: ccc
: ccc
: 111/333
: aaa
: bbb
: ccc
: ccc
: 111/444
: aaa
: bbb
: 111/555
: aaa
: bbb
: ccc
: 現在想用 awk,達成一效果:
: 「數字/數字」 當要取得的區塊的頭,「數字/數字前最後一個 ccc」 為區塊的尾,
: 此為一完整區塊,印出來。
: 若只有「數字/數字」,卻沒有 ccc 行,就視為不完成區塊,不印。
: 所以印出來會是
: 111/222
: aaa
: bbb
: ccc
: ccc
: ccc
: 111/333
: aaa
: bbb
: ccc
: ccc
: 111/555
: aaa
: bbb
: ccc
: 剛試了好多方法,但判斷何處為區塊內最後一個 ccc?一直有問題,
: 所以想請問大家,有沒有什麼可行的解法?感謝。
: p.s. 願贈送 10000 批幣當感謝最佳解的小心意,雖然很微薄。
試著土法練鋼:
{
test[NR] = $0
if(NR == 1){flag=1}
if ((NR !=1) && ($0 ~ /[0-9][0-9]*\/[0-9][0-9]*/)){
x=NR-1
if(test[x] ~ /ccc/){
for(i=flag;i<NR;i=i+1)
print test[i]
}
flag=NR
}
}
END{
x=NR
if(test[x] ~ /ccc/){
for(i=flag;i<=NR;i=i+1)
print test[i]
}
}
--
Tags:
Linux
All Comments
By Susan
at 2013-02-22T12:53
at 2013-02-22T12:53
Related Posts
awk 一特殊用法
By Genevieve
at 2013-02-21T23:14
at 2013-02-21T23:14
pcmanx-gtk2 1.2 released
By Poppy
at 2013-02-21T21:50
at 2013-02-21T21:50
Ubuntu12.04下灌xfce、kde更新問題
By Lydia
at 2013-02-21T20:34
at 2013-02-21T20:34
Ubuntu12.04下灌xfce、kde更新問題
By Xanthe
at 2013-02-21T17:25
at 2013-02-21T17:25
ubuntu 安裝套件
By Oliver
at 2013-02-21T13:11
at 2013-02-21T13:11