2013-03-12 8 views
17

Potrzebuję usunąć kolumnę z pliku tekstowego. Myślę, że można to zrobić za pomocą odwrotności polecenia cut. To znaczy, coś takiego:Jak użyć polecenia cut w bash, aby wyświetlić wszystkie kolumny z wyjątkiem wskazanych?

Jeśli jest to mój plik:

01 Procedimiento_tal retiro aceptado 
01 tx1 
01 tx2 
01 tx3 
02 Procedimiento_tal retiro rechazado 
02 tx1 
02 tx2 
02 tx3 
03 Procedimiento_tal retiro aceptado 
03 tx1 
03 tx2 
03 tx3 

Co mogę zrobić, aby usunąć pierwszą kolumnę z cięcia i pojawia się następujący tekst w bash ?:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 

góry dzięki

Odpowiedz

35

Korzystanie cut:

cut -d ' ' -f 2- input-file 

powinien zrobić, co chcesz.

+0

Dzięki, to działa :) – Herman

+1

nie mogę tego zrobić wystarczająco ... – hovanessyan

15

Aby przeczytać infile użyciu ' ' jako ogranicznik (-d) i umieścić pola (-f) 2 r (2-) do file:

cut -d' ' -f2- infile > file 

Zobacz man cut więcej opcji.

N.B: Nie jest to specyficzna dla .

+0

Awans z powodu wyjaśnienia. –

+1

Bardzo pomocne wyjaśnienie! – ayaz

4

GNU coreutils cut obsługuje flagę --complement. Więc jeśli używasz tej wersji cięcia można powiedzieć:

cut --complement -d' ' -f1 infile 

wyjściowa:

Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro rechazado 
tx1 
tx2 
tx3 
Procedimiento_tal retiro aceptado 
tx1 
tx2 
tx3 
+0

Woow, dzięki Thor, zmienię mój scenariusz na ten. Doceniam twoją pomoc. – Herman

1

Oto polecenie to działa, i że jest nieco krótszy niż każdy ma:

cut -b 4- input-file 

-b oznacza bajt i wybiera bajty, które zostaną wklejone na ekranie.

4- jest częścią -b i oznacza, że ​​wybierze 4 znak każdego wiersza do ostatniego znaku w każdym wierszu. komenda cut następnie wklei zaznaczenie na ekran.

Powiązane problemy