Mój plik,
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID
-------- -------- -------- -------- -------- -------- ---- ------
15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 P MvAvr15m 4355 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 Q MvAvr15m 6664 CP
Wynik,
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT WERT
-------- -------- -------- -------- ------- ----
15MinAvg AIRSS 33-GIS DMDMGIS1 I 1123
15MinAvg AIRSS 33-GIS DMDMGIS1 P 2344
15MinAvg AIRSS 33-GIS DMDMGIS1 Q 4545
15MinAvg AIRSS 33-GIS DMDMGIS2 I 6576
15MinAvg AIRSS 33-GIS DMDMGIS2 P 4355
15MinAvg AIRSS 33-GIS DMDMGIS2 Q 6664
Chcę usunąć dwie kolumny INFO_NAM
i WERT
z mojego pliku wejściowego.
shell
shell-script
text-processing
sed
awk
pmaipmui
źródło
źródło
INFO_NAM
iPROCID
usunięteawk '{$(NF-1)=$(NF-2)=""};1' <file | column -t
ładnie go sformatować.Odpowiedzi:
Nie należy drukować 6 th i 8 th kolumny
źródło
Odpowiedź została udzielona wcześniej w Przepełnieniu stosu.
/programming/15361632/delete-a-column-with-awk-or-sed /programming/7551219/deleting-columns-from-a-file-with-awk -lub-z-linii-poleceń-na-Linux itp.
Uważam, że
awk
jest do tego najlepszy.Można również użyć
cut
.źródło
cut
lub nie wspominać o nim?--complement
opcjacut
może być przydatna, tzn. usunięcie dwóch pól zamiast wybierania sześciu:cut -f6,8 --complement file
cut –c1-45,55-58
. Ale zanim to zrobię, muszę policzyć całkowitą liczbę postaci, więc tylko ja możemy to zrobić. Ale chciałem wydrukować kolumny w tym samym formacie, co mój format wejściowyUżyj,
printf
aby zachować format każdego pola. Każde pole ma długość x znaków, a znak minus uzasadnia pozostały ciąg.źródło