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

Użytkownik


Mamy pomysły tylko pokaż cały plik i napisz co mamy przenieść.
Offline




złodziej wirków ]:->
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
aaabbcccdddeeeOczywiście rozwiązanie nieoptymalne ale działa :P
Offline

Użytkownik


Inne propozycje rozwiązania:
awk 'ORS=""; $1=$1; END { print "\n"}' plikawk '$1=$1{printf"%s",$0} END {print ""}' plikawk '{for(i=1; i<=NF; i++) printf "%s", $i} END {print ""}' plikOffline
Strony: 1