请教一个问题:字段的定位

请教一个问题:字段的定位

在一个文件中包含了很多记录,这些记录不规则;有的很长,有多个字段;有的很短,字段也很少;

但是每行记录中都包含了一个特定的字符串 "abc", 现在需要读取 "abc" 这个字段后的第 n 个字段,

大家有没有好方法?      
复制内容到剪贴板
代码:
[No.366 19:37:05 ~ ]# echo "1 2 3 abc 4 5 6" | awk -F"abc" '{ print $2 }'
4 5 6
[No.367 19:37:27 ~ ]# echo "1 2 3 abc 4 5 6" | awk -F"abc" '{ print $2 }' | awk '{print $1}'
4
[No.368 19:37:32 ~ ]# echo "1 2 3 abc 4 5 6" | awk -F"abc" '{ print $2 }' | awk '{print $2}'
5
[No.369 19:37:35 ~ ]# echo "1 2 3 abc 4 5 6" | awk -F"abc" '{ print $2 }' | awk '{print $3}'
6
      
复杂一点的
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[267 0] %[/color] cat file
    1 abc 11 22 33
  1 2 abc 44 55 66
1 2 3 abc 77 88 99
[color=blue]-(user@host:tty)-(tmp)-
[267 0] %[/color] cat file.awk

{
    for (i = 1; i <= NF; i++) {
        if ($i ~ /^abc$/) {
            print $(i + 2)
            break
        }
    }
}
[color=blue]-(user@host:tty)-(tmp)-
[267 0] %[/color] awk -f file.awk file
22
55
88
[color=blue]-(user@host:tty)-(tmp)-
[267 0] %[/color]
      
多谢两位兄台, 现在豁然开朗!

ps:  deadvoid 兄的脚本水平让人实在佩服       
[QUOTE=Roc.Ken]deadvoid 兄的脚本水平让人实在佩服 [/QUOTE]