Wpis z mikrobloga

Mam plik tekstowy, zawiera kilka tys. linijek w formacie:

XXXX:YYYYYYYYY:ZZZZZ:VVVVVV


Y i Z jest zawsze tyle samo, liczba X i V jest rożna.

W jaki sposób wyciągnąć tylko dane X i Y w takim formacie:

XXXX:VVVVVV


?

Użycie cut i określenie separatora jako ":" odpada, bo taki znak może wystąpić w Y lub Z.

Można by spróbować napisać jakieś wyrażenia które zrobi tak:

1. Znajdzie pierwszy ":".

2. Usunie następnie 16 znaków (bo tyle jest w sumie Y i Z wraz z dwoma ":".

3. Wyświetli to co zostanie.

Tylko jak to zrobić?


#linux #bash #regexp #wyrazeniaregularne
  • 17
@padobar: Podejrzewam, że w Pythonie kilka linijek wystarczy.

@tymmej: awk to kombajn, a ja umiem może obsługiwać z 10% tego narzędzia.


@piotr167: Aż tak fajnie nie ma. :) Wyrazy Y i Z są inne dla każdej lini.

@Ratriczek: Potrzebuje rozwiązania natywnego, najlepiej w samym bashu.

@Misiokoala: Są jakieś rzeczy których nie da się zrobić w Vi?


@xda_: Chyba mam pewien pomysł...

@franekfm, @mctortillabezmex: Nie.
Nie. ( ͡° ʖ̯ ͡°)


@K5HV: ja to nie jak tak, co najwyżej trzeba napisać:

cat plik | cut -d":" -f1,4
biorąc dwukropek w cudzysłów. U mnie działa. O proszę.

$ echo XXXX:YYYYYYYYY:ZZZZZ:VVVVVV | cut -d":" -f1,4
XXXX:VVVVVV
$