0
votes

Comment puis-je préfixer la sortie de chaque correspondance dans grep avec du texte?

J'ai un fichier avec une liste de phrases

bananas,an
oranges,an

J'exécute cat file.txt | xargs -I% sh -c "grep -Eio '(an)' >> output.txt"

Ce que je n'arrive pas à comprendre, c'est que je veux que la sortie contienne le ligne d'origine, par exemple:

apples
banananas
oranges

Comment puis-je préfixer la sortie de grep pour inclure également la valeur qui y est envoyée?


1 commentaires

Pourriez-vous s'il vous plaît me faire savoir si ma réponse vous aide ici.


3 Réponses :


1
votes

Cela devrait être une tâche pour awk , pourriez-vous essayer de suivre.

awk '/an/{print $0",an"}'  Input_file

Cela cherchera la chaîne an dans tout lignes de Input_file et ajoutez-y un également.


0 commentaires

0
votes

Solution avec sed :

sed '/an/s/$/,an/' intput_file

Ceci trouve les lignes qui correspondent au modèle / an / , et ajoute , un à la fin de l'espace du motif $.


0 commentaires

0
votes

Utilisez awk au lieu de grep:

banananas,an
oranges,an

Output:

$ awk -v s="an" '                          # search string
BEGIN {
    OFS=","                                # separating comma
}
match($0,s) {                              # when there is a match
    print $0,substr($0,RSTART,RLENGTH)     # output
}' file


0 commentaires