Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam szanownych forumowiczów. Mam następujący problem: chcę w pliku tekstowym przenieść wszystkie linie poprzedzone tabulatorem na koniec linii poprzedzającej, tak aby wszystkie wystąpienia typu:
aaaaaa
bbb
ccc
zamienić na jedną linię:
aaaaaabbbccc.
Czy da się tego dokonać programem typu sed czy tr bądź innym podobnym? Zależy mi by zrobić to w stylu
cat input.txt | magiczny_program -parametry ...
Mogę oczywiście np w pętli wczytywać linię do zmiennej, kolejną linię do innej zmiennej i sprawdzać czy występuje tabulator, jeśli tak to doklejać zawartość linii następnej do poprzedzającej ale jest to raczej mało elegancki sposób, chciałbym to zrealizować jakoś sprytniej, macie jakieś pomysły?
Offline
Mamy pomysły tylko pokaż cały plik i napisz co mamy przenieść.
Offline
taki łamaniec od niechcenia
winnetou@wigwam /tmp $ cat X aaa bb ccc ddd eee winnetou@wigwam /tmp $ sed -e 's/\t//g' X |while read L;do echo -n $L;done;echo aaabbcccdddeee
Oczywiście rozwiązanie nieoptymalne ale działa :P
Offline
Inne propozycje rozwiązania:
awk 'ORS=""; $1=$1; END { print "\n"}' plik
awk '$1=$1{printf"%s",$0} END {print ""}' plik
awk '{for(i=1; i<=NF; i++) printf "%s", $i} END {print ""}' plik
Offline
Strony: 1