Podczas próby odczytania numeru wersji vim
otrzymuję wiele dodatkowych linii, które muszę zignorować. Próbowałem przeczytać instrukcję head
i wypróbowałem następujące polecenie:
vim --version | head -n 1
Chcę wiedzieć, czy jest to właściwe podejście?
vim --version 2>&1 | sed 1q
:)
Sprawdź, czy twój pakiet wyświetla te informacje,stderr
ponieważ @WilliamPursell zapewnia sprawdzenie.Odpowiedzi:
Tak, to jeden ze sposobów uzyskania pierwszej linii danych wyjściowych z polecenia.
Jeśli polecenie zwraca cokolwiek do standardowego błędu, który chciałbyś przechwycić w ten sam sposób, musisz przekierować standardowy błąd polecenia do standardowego strumienia wyjściowego:
Istnieje wiele innych sposobów na przechwycenie pierwszej linii, w tym
sed 1q
(wyjdź po pierwszej linii),sed -n 1p
(wypisz tylko pierwszą linię, ale przeczytaj wszystko),awk 'FNR == 1'
(wypisz tylko pierwszą linię, ale znowu przeczytaj wszystko) itd.źródło
Użyłbym:
awk 'FNR <= 1' file_*.txt
Jak wskazuje @Kusalananda, istnieje wiele sposobów na przechwycenie pierwszej linii w wierszu poleceń, ale użycie opcji
head -n 1
może nie być najlepszą opcją przy używaniu symboli wieloznacznych, ponieważ wypisze dodatkowe informacje. Zmiana'FNR == i'
na'FNR <= i'
pozwala uzyskać pierwsze i wiersze.Na przykład, jeśli masz n plików o nazwie plik_1.txt, ... plik_n.txt:
awk 'FNR <= 1' file_*.txt hello ... bye
Ale za pomocą
head
symboli wieloznacznych wypisz nazwę pliku:head -1 file_*.txt ==> file_1.csv <== hello ... ==> file_n.csv <== bye
źródło
head -qn1 file_*.txt