Jak skopiować kilka pierwszych wierszy wielkiego pliku i dodać wiersz tekstu na końcu za pomocą niektórych poleceń Linuksa?


89

Jak skopiować kilka pierwszych wierszy dużego pliku i dodać wiersz tekstu na końcu, używając niektórych poleceń Linuksa?


1
W bashhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Eric Leschinski

Odpowiedzi:


147

headPolecenie może dostać pierwsze nlinie. Odmiany to:

head -7 file
head -n 7 file
head -7l file

co spowoduje wyświetlenie pierwszych 7 linii pliku o nazwie "file". Polecenie, którego należy użyć, zależy od wersji programu head. Linux będzie działał z pierwszym.

Aby dołączyć wiersze na końcu tego samego pliku, użyj:

echo 'first line to add' >>file
echo 'second line to add' >>file
echo 'third line to add' >>file

lub:

echo 'first line to add
second line to add
third line to add' >>file

zrobić to za jednym zamachem.

Więc łącząc te dwa pomysły razem, jeśli chcesz pobrać pierwsze 10 wierszy input.txtpliku output.txti dołączyć wiersz z pięcioma "="znakami, możesz użyć czegoś takiego:

( head -10 input.txt ; echo '=====' ) > output.txt

W tym przypadku obie operacje wykonujemy w pod-powłoce, aby skonsolidować strumienie wyjściowe w jedną, która jest następnie używana do tworzenia lub nadpisywania pliku wyjściowego.


21

Zakładam, że to, co próbujesz osiągnąć, to wstawienie wiersza po kilku pierwszych wierszach pliku tekstowego.

head -n10 file.txt >> newfile.txt
echo "your line >> newfile.txt
tail -n +10 file.txt >> newfile.txt

Jeśli nie chcesz reszty linii z pliku, po prostu pomiń część końcową.


3
Powłoki podpowłokowe pozwalają to zrobić bez ponownego otwierania pliku wyjściowego:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs

5

Pierwsze kilka linii: man head.

Dołącz wiersze: użyj >>operatora (?) W Bash:

echo 'This goes at the end of the file' >> file
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.