Mam katalog z kilkoma .txt
plikami.
Z każdego z tych plików chcę wybrać pierwszy wiersz i wydrukować go w nowym .txt
pliku (aby uzyskać listę wszystkich pierwszych wierszy).
Próbowałem go z awk
i sed
poleceń i łączyć go z pętlą, ale bez powodzenia.
command-line
text-processing
Annemieke Smet
źródło
źródło
Odpowiedzi:
Użyj
head
:-n1
mówi,head
aby wyodrębnić tylko pierwszy wiersz.-q
nakazuje szefowi, aby nie drukował nazwy pliku.źródło
Używanie
grep
:grep
dopasuje dowolny znak i zakończy działanie po pierwszym dopasowaniu, tj.grep
wypisze pierwsze wiersze wszystkich plików wejściowych i zapisujemy je wout.txt
.źródło
Używając tylko Bash:
*.txt
jest rozwinięty do listy folderów / plików kończących się.txt
na w bieżącym katalogu roboczym (ponieważ są tylko pliki, których foldery kończą.txt
się, nie są problemem);<"$f" read line
odczytuje jeden wiersz ze ścieżki pliku zapisanej wf
i zapisuje goline
;printf "$line\n" >>new.txt
: dołącza treśćline
donew.txt
;źródło
Wypróbowałeś to
awk
, otoawk
wersjaźródło
Innym podejściem do AWK jest nakazanie AWK wydrukowania, ale natychmiast przejście do następnego pliku
sed
umożliwia także drukowanie określonych linii. Tutaj połączyłem to zfind
I perl:
Ostatni ale nie mniej ważny ,
grep
Zapisanie wszystkiego w jednym pliku to tylko kwestia dołączenia
> outputFile.txt
na końcu tych poleceń.źródło