J'essayais de trouver une solution à cette question. Je voulais utiliser awkpour la solution.
Mon fichier d'entrée est quelque chose comme ci-dessous.
-bash-3.2$ cat file
ramesh
ramesh_venkat
ramesh3_venkat3
ramesh4
ramesh5
venkat
venkat3
venkat4
J'ai utilisé la awkcommande pour extraire les secondes valeurs _comme ci-dessous.
awk -F "_" '{print $2}' file
Cependant, bien que la commande ci-dessus imprime les valeurs correctes, j'obtiens des lignes vides dans ma sortie. J'ai 2 questions.
question 1
Comment puis - je supprimer les lignes vides dans la sortie de sorte que je ne reçois que venkatet venkat3dans la sortie?
Si j'utilise printfau lieu de printdans mon awk, j'obtiens venkatvenkat3en sortie ce qui n'est pas ce que je voulais réaliser. Je veux la sortie comme,
venkat
venkat3
question 2
En utilisant ces valeurs comme un tableau associatif ou quelque chose, comment puis-je trouver si les valeurs se produisent réellement dans la $1colonne?
Je voulais réaliser quelque chose comme,
awk -F "_" '$2==1{print $1}' file
ÉDITER
Je n'ai pas remarqué la awksolution de Stéphane. Est-ce que ça fait la même chose que j'avais mentionnée?
awkne fait pas la même chose. Votre approche suppose qu'un mot ne peut être contenu dans un autre que s'il est séparé par_. Bien que cela soit vrai pour l'exemple du PO, toutes les réponses publiées concernent également des cas commedoglionet pas seulementdog_lion.