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?

biznez
źródło
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.

paxdiablo
źródło
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ą.

DJ.
źródło
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
strager
źródło