`cut -d: -f5-` drukuje linie, nawet jeśli nie mają dwukropka

12

Zakładając plik o nazwie „plik” zawierający linie:

foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog

Jeśli użyjemy polecenia cut z tymi opcjami, otrzymamy:

$ cut -d ":" -f 5- file
quux
five:six:seven
epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog

W ostatnim wierszu znak dwukropka nie został znaleziony, więc normalnie nie powinien był przyjmować tej linii, ponieważ zaczynamy od 5. pola do końca wiersza.

Dlaczego to jest takie ?

00-Yalo
źródło

Odpowiedzi:

16

Domyślnie cutz tą -fopcją wypisuje każdy wiersz, który nie zawiera znaku ogranicznika. Użyj, -sjeśli ich nie chcesz:

$ cut -d ":" -f 5- -s file
quux
five:six:seven
epsilon:zeta:eta:theta:iota:kappa:lambda:mu
Florian Diesch
źródło