J'ai un grand fichier texte qui contient une chaîne unique au milieu. Ce que je veux faire, c'est tout imprimer APRÈS la chaîne en utilisant grep.
cat textfile | grep "target_string"
This highlights target_string but prints the whole file
cat textfile | grep -o "target_string"
This prints only target_string
cat textfile | grep -o "target_string*"
This prints only target_string
Comment puis-je tout imprimer après target_string et rien avant?
Vous avez oublié le '.':
cat textfile | grep -o "target_string.*"
Avec GNU grep
, essayez -B0 -A999999999
ou similaire. Un meilleur choix pourrait être awk
:
awk '/target_string/ {seen = 1}
seen {print}'
Si (la spécification de votre problème n'est pas claire) vous n'avez pas non plus besoin d'imprimer la ligne correspondante, sed
est encore plus court:
sed '1,/target_string/d'
Étrangement, la réponse acceptée a imprimé toute la ligne, où je voulais juste toutes les informations après la chaîne cible. Cela a fonctionné pour moi:
sed -n 's/target_string//p' filename
Adapté de cet article
Cela imprimera tout après chaque match, sur cette même ligne uniquement:
Perl -lne 'print $1 if /target_string(.*)/' textfile
Cela fera de même, sauf qu'il imprimera également toutes les lignes suivantes:
Perl -lne 'if ($found){print} else{if (/target_string(.*)/){print $1; $found++}}' textfile