Pany, trochę w nawiązaniu tego tematu https://www.wykop.pl/wpis/27972167/ziomale-mam-taki-tam-pliczek-wiersze-zaczynaja-sie/ . To sobie napisałem, okej. A jeśli temat zmodyfikujemy - chcę podzielić ten plik na podstawie zmiany pierwszego znaku w linii, bo powiedzmy, że indeksy nie zawsze zaczynają się od cyfra+000 i nie kończą na cyfra+999, czyli jak skrobnąć jakąś linijkę, która takie coś użre?
#sed #bash #skryptowanie #linux
#sed #bash #skryptowanie #linux
Ex3
2017-11-22 08:38:38
+3
Ja bym to skryptem basha załatwił. Jak nie będzie za chwilkę odpowiedzi to tobie napisze. A spacje na początku lub odstępy ma ignorować?
Ex3
2017-11-22 09:08:39
+2
#!/bin/bash
FILE='test.file'
while read LINE
do
if [ "$LINE" = "" ]
then
continue
fi
FIRST_L="$(echo $LINE | head -c 1)"
echo $LINE >> $FIRST_L'.txt'
if [ "$FIRST_L" != "$OLD_L" ]
then
echo
fi
OLD_L=$FIRST_L
done < $FILE
Spóźniłem się :)
FILE='test.file'
while read LINE
do
if [ "$LINE" = "" ]
then
continue
fi
FIRST_L="$(echo $LINE | head -c 1)"
echo $LINE >> $FIRST_L'.txt'
if [ "$FIRST_L" != "$OLD_L" ]
then
echo
fi
OLD_L=$FIRST_L
done < $FILE
Spóźniłem się :)
OperatorHydrolokator
[OP]
2017-11-22 08:57:53
+1
@OperatorHydrolokator: znalazłem taką sprytną linijkę:
awk -F';' -v i=1 'NR>1 && $i!=p { print "" }{ p=$i } 1'
tylko musiałem w sumie walnąć taki kawał tekstu:
cat calosc.txt | sed -n 's/\(^[0-9]\)/\1;/p' | awk -F';' -v i=1 'NR>1 && $i!=p { print "" }{ p=$i } 1' | sed 's/\(^[0-9]\);\([0-9]\{3\}\)/\1\2/' > calosc_ok.txt
żeby to zadziałało jak potrzebuję. No ale działa :)
awk -F';' -v i=1 'NR>1 && $i!=p { print "" }{ p=$i } 1'
tylko musiałem w sumie walnąć taki kawał tekstu:
cat calosc.txt | sed -n 's/\(^[0-9]\)/\1;/p' | awk -F';' -v i=1 'NR>1 && $i!=p { print "" }{ p=$i } 1' | sed 's/\(^[0-9]\);\([0-9]\{3\}\)/\1\2/' > calosc_ok.txt
żeby to zadziałało jak potrzebuję. No ale działa :)
OperatorHydrolokator
[OP]
2017-11-22 20:21:05
+1
@Ex3 ej kolego, dopiero teraz zauważyłem - dzięki za zainteresowanie i odpowiedź :) Całkiem ciekawe to też.