How to grep out substring which can change?

后端 未结 6 1385
孤独总比滥情好
孤独总比滥情好 2021-01-27 18:42

Basically I have a very large text file and each line contains

tag=yyyyy;id=xxxxx;db_ref=zzzzz; 

What I want is to grep out the id, but the id

相关标签:
6条回答
  • 2021-01-27 19:23

    Try the following:

    grep -oP 'id=\K[^;]*' file
    
    0 讨论(0)
  • 2021-01-27 19:24

    Via grep:

    grep -o 'id=[^;]*'
    

    Via awk:

    awk -F';' '{ print $2}' testlog
    id=xxxxx
    

    edit: see sudo_O's answer for the look-behind. it's more to the point of your question, IMO.

    0 讨论(0)
  • 2021-01-27 19:28

    You could try this awk. It should also work if there are multiple id= entries per line and it would not give a false positive for ...;pid=blabla;...

    awk '/^id=/' RS=\; file
    
    0 讨论(0)
  • 2021-01-27 19:38

    try :

    grep -Po "(?<=id=)[^;]*" file
    
    0 讨论(0)
  • 2021-01-27 19:47

    You could do:

    $ grep -o 'id=[^;]*' file
    

    And if you don't want to inlcude the id= part you can using positive look-behind:

    $ grep -Po '(?<=id=)[^;]*' file
    
    0 讨论(0)
  • 2021-01-27 19:47
    perl -lne 'print $1 if(/id=([^\;]*);/)' your_file
    

    tested:

    > echo "tag=yyyyy;id=xxxxx;db_ref=zzzzz; "|perl -lne 'print $1 if(/id=([^\;]*);/)'
    xxxxx
    >
    
    0 讨论(0)
提交回复
热议问题