grep para ver si una línea termina con una cadena en particular

grep para ver si una línea termina con una cadena en particular

Hola tengo un archivo que tiene muchas líneas que terminan en main.css">, y algunas están repetidas.

Quiero conservar solo una copia de estas líneas y eliminar la línea repetida.

¿Puedo usar grep para buscar si un archivo tiene una línea que termina en main.css">?

Hasta ahora tengo:

 grep ' main.css' file.txt |sort | uniq -u

Esto no hace nada como esperaba, solo me da un resultado en blanco. ¿Por favor ayuda? Esto no

Respuesta1

Deberías usar:

grep -n 'main\.css">$' file.txt

$denota el final de la línea, obviamente, nada puede seguir después de esto.

No necesita *aquí, ya que está buscando el patrón dentro de la línea, todo lo que está al frente se ignora automáticamente si se encuentra su patrón. Lo único que necesita escapar aquí es .cuál es el único operador de expresión regular en main.css">. También -res redundante cuando proporcionas un solo archivo.

Respuesta2

También podrías usar awk,

$ cat file
foo main.css">
ghj
brar main.css">

$ awk '/main\.css">$/{print NR}' file
1
3

O sed:

$ sed '/main\.css">$/=' file
1
3

Respuesta3

Creo que también querías conservar otras líneas que no existen main.css>incluso si estuvieran duplicadas:

Line 1
Line 2
Line 1
Line 2 main.css">
Line 2 main.css">
Line 3 
Line 3 main.css">
Line 4

De modo que después del comando obtendrías:

Line 1
Line 1
Line 2
Line 2 main.csv>
Line 3 
Line 3 main.csv>
Line 4

En este caso, el siguiente comando debería funcionar: sort your_file | awk '!/main.css">$/;/main.css">$/,/main.css">$/{if($0!=p){print;p=$0}}'

Respuesta4

sed  '/main.css/d' file.txt  > ~/Desktop/solution.txt

Eso funcionó perfectamente bien :)

información relacionada