No Vim você pode tentar este comando global:
g/^\(.*\)\n.\+/d
│ ├────────────┘ │
│ │ └ delete the matching lines (see ':h :d')
│ │
│ └ pattern matching 2 lines, the second one starting like the 1st
│
└ global command (see ':h :g')
Eu tenho alguns arquivos que se parecem com isso:
0
04
040
040t
040te
040tes
040test
040test2
041
041t
041te
041tes
041test
041test1
0n
0ne
0ne-
0ne-o
0ne-os
0ne-osx
Preciso excluir todas as linhas incluídas na linha depois delas. IOW, eu preciso reduzi-lo para isso:
040test2
041test1
0ne-osx
Alguma sugestão para o Linux CLI ou o vim para realizar isso? Obrigado.
Perl para o resgate!
perl -lne 'print $prev if -1 == index $_, $prev;
$prev = $_;
END { print $prev }' -- file.txt
-n
lê a linha de entrada por linha -l
remove novas linhas da entrada e as adiciona a print
$_
é a variável especial que contém a linha real lida da entrada Tags command-line vim linux