
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 -r
es 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 :)