出现n个连续字符后打印剩余行

时间:2017-04-21 09:26:09

标签: awk sed

我想在第n次连续出现一个字符(;)之后打印一个字符串行的其余部分。

例如:

string -> USER=5000;ALL;tree1;tree1;4;;3;MM_;;;;;;;;main

我希望在使用;sed awk的第5次出现后打印剩余的一行。

3 个答案:

答案 0 :(得分:0)

删除第五或第n;并打印其余的

$ awk '{sub(/^([^;]*;){5}/,"")}1' file
;3;MM_;;;;;;;;main

答案 1 :(得分:0)

awk 方法(接受可选参数n以指定;次出现次数):

s="string -> USER=5000;ALL;tree1;tree1;4;;3;MM_;;;;;;;;main"
echo $s | awk -F';' -v n=5 '{o=""; for(i=n+1;i<=NF;i++){ o=o $i FS }{print o}}' OFS=';'

sed 方法:

s="string -> USER=5000;ALL;tree1;tree1;4;;3;MM_;;;;;;;;main"
echo $s | sed -En 's/^([^;]*;){5}//p'

输出(两种方法):

;3;MM_;;;;;;;;main

-E选项,允许扩展正则表达式

答案 2 :(得分:0)

Dim Button As CommandButton
With Knap
    Set Button = .Object
    With Button
        .Caption = "Eksporter til PDF"
        .BackColor = vbRed
        .Font.Underline = True
        ...
    End With
    ...
End With