Filtre grep

Mon fichier contient:

 

Mon script:

 #!/bin/sh test=`grep 'xyz' file` echo $test 

Cela me donne la sortie comme

  

Je veux ma sortie comme

 name="hello" desc="hello" name="hello1" desc="hello1" name="hello2" desc="hello2" 

grep aime ces choses:

 $ grep -Po '(?<= 

Explication

  • -Po Utilisez les expressions régulières Perl ( -P ) et n'imprimez que les correspondances ( -o ).
  • (?<=
    • (?<= commence à capturer après la chaîne .
    • [^/]* correspondre tous les caractères au caractère / .

Vous pouvez également essayer cette commande sed ,

 sed -r 's/^.*$/\1\n\2\n\3/g' file 

Sortie:

 name="hello" desc="hello" name="hello1" desc="hello1" name="hello2" desc="hello2" 

Avec GNU awk pour RS multi-char:

 $ awk -v RS='/>' 'sub(/^