grep para ver se uma linha termina com uma string específica

grep para ver se uma linha termina com uma string específica

Olá, tenho um arquivo que possui muitas linhas que terminam com main.css">, e algumas delas são repetidas.

Quero manter apenas uma cópia dessas linhas e excluir a linha repetida.

Posso usar o grep para pesquisar se um arquivo tem uma linha que termina com main.css">?

Até agora eu tenho:

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

Isso não faz nada como eu esperava, apenas me dá uma saída em branco. Por favor ajude? Isso não

Responder1

Você deveria usar:

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

$denota o fim da linha, obviamente, nada pode seguir depois disso.

Você não precisa do *aqui, pois você está procurando o padrão dentro da linha, tudo que está na frente é automaticamente negligenciado se o seu padrão for encontrado. A única coisa que você precisa escapar aqui é .qual é o único operador de expressão regular em main.css">. Também -ré redundante quando você fornece apenas um arquivo.

Responder2

Você também pode usar o awk,

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

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

Ou sed:

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

Responder3

Acho que você também queria manter outras linhas que não existem, main.css>mesmo que sejam duplicadas:

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

Para que após o comando você obtenha:

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

Neste caso, o comando abaixo deve resolver o problema: sort your_file | awk '!/main.css">$/;/main.css">$/,/main.css">$/{if($0!=p){print;p=$0}}'

Responder4

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

Funcionou perfeitamente bem :)

informação relacionada