Wpis z mikrobloga

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
  • 4
  • Odpowiedz
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ć?
  • Odpowiedz
@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 :)
  • Odpowiedz
#!/bin/bash

FILE='test.file'

while read LINE
do
if [ "$LINE" = "" ]
then
continue
fi

FIRSTL="$(echo $LINE | head -c 1)"
echo $LINE >> $FIRST
L'.txt'

if [ "$FIRSTL" != "$OLDL" ]
then
echo
fi

OLDL=$FIRSTL

done < $FILE

Spóźniłem się :)
  • Odpowiedz