Mam linie danych, które zawierają pojedynczej kolumny i dwie kolumny. Co chcę zrobić, to wyodrębnić linie, które zawierają tylko 2 kolumny.Filtrowanie wierszy na podstawie liczby kolumn z AWK
0333 foo
bar
23243 qux
uzyskując tylko:
0333 foo
23243 qux
Należy pamiętać, że są one oddzielone zakładka, nawet w przypadku linii z tylko jedną kolumnę masz kartę na początku.
Jak to zrobić?
próbowałem tego, ale nie:
awk '$1!="";{print $1 "\t" $2}' myfile.txt
enter code here
Dlaczego nie 'awk 'NF == 2 {print} {} {} {} {} {} {}'' ?? NF == 2 wystarcza. –
@Mark, niektóre implementacje 'awk' będą drukowane domyślnie, jeśli nie określisz domyślnej akcji. Mój kod działa również na te. Wasze ciała są zepsute waszym awk GNU, niektórzy z nas muszą napisać przenośny kod :-) Ja wyjaśnię. – paxdiablo
@ pax, Implementacja awk, która zachowuje się tak, jak opisujesz, byłaby bardzo zepsuta. Z tego co mi wiadomo, awk pochodzi z wersji 7, a instrukcja wyraźnie opisuje jego zachowanie: "na przykład, długość programu> 72 drukuje wszystkie linie wejściowe, których długość przekracza 72 znaki." –