[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[shell-script] sed emulando head -n 1 e tail -2 filtrando o meio
From: |
Julio Quierati |
Subject: |
[shell-script] sed emulando head -n 1 e tail -2 filtrando o meio |
Date: |
Thu, 18 Nov 2010 19:54:45 -0200 |
Olá Lista,
Tenho um arquivo com o seguinte formato com n linhas conforme o modelo
abaixo
0211070250520100928022505201025052010000031
10560704717499612301 0007415 7791259913
000772505201007410500020300019002000000000000 0000003R
10850704577499797055 0007499 8781000282
000872505201007504300005000007003870000000000 0000004R
10560700707499946523 0007115 7581070561
000752505201007515900002200005002000000000000 0000005R
20560700447199883145 0007115 4191057039
000412505201007541300004500006003000000000000 0000007R
10560700707199879410 0007515 7199752444
000712505201007501500021000020002000000000000 0000008R
20850700107191314938 0007199 1174803037
000112505201007583100003500005003110000000000 0000236R
10580700747199090110 0007915 7591982260
000752505201007284700011300010002790000000000 0000238R
90000312000000000000000000
^$ - linha em branco
Preciso conservar a 1 e as 2 ultimas linhas e as demais que comecem com 2
apagando as demais.
Lembrando que ultima linha do arquivo é ^$ =D
A saida esperada seria essa:
0211070250520100928022505201025052010000031
20560700447199883145 0007115 4191057039
000412505201007541300004500006003000000000000 0000007R
20850700107191314938 0007199 1174803037
000112505201007583100003500005003110000000000 0000236R
20560700447199883145 0007115 4191057039
000412505201007541300004500006003000000000000 0000007R
20850700107191314938 0007199 1174803037
000112505201007583100003500005003110000000000 0000236R
90000312000000000000000000
^$ - linha em branco
para as linhas que comecem com 2 foi tranquilo =D
sed -i '{1p;/^2/!d}' arquivo.txt
Mas e para conservar as 2 ultimas linhas ?
Procurando um pouco encontrei
sed -e :a -e '{$q;N;3,$D;ba}' arquivo.txt
Mas nao consegui imprimir a 1 e filtrar o meio.
Em awk consegui, depois de algum tempo procurando =D tail -2
awk 'NR==1 {print};/^2/ {print};{y=x "\n" $0; x=$0};END{print y}'
arquivo.txt
Mas necessito da linda opcao -i do sed, awk tem algo parecido, vim?
Necessito de uma luz!
Atenciosamente,
Julio Quierati
User Linux #492973
[As partes desta mensagem que não continham texto foram removidas]
- [shell-script] sed emulando head -n 1 e tail -2 filtrando o meio,
Julio Quierati <=