Mám několik souborů, které obsahují textové informace ASCII v prvních 5-10 řádcích, po nichž následují dobře tabulkové maticové informace. V shell skriptu chci odstranit těchto prvních pár řádků textu, abych mohl použít čistou maticovou informaci v jiném programu. Jak k tomu mohu použít příkazy bash shell?
Pokud je to nějaká pomoc, používám RedHat a linuxové systémy Ubuntu.
Přijatá odpověď:
Pokud soubor není symbolický nebo pevný odkaz, můžete použít sed, tail nebo awk. Příklad níže.
$ cat t.txt
12
34
56
78
90
sed
$ sed -e '1,3d' < t.txt
78
90
Můžete také použít sed in-place bez dočasného souboru:sed -i -e 1,3d yourfile
. To nebude nic opakovat, pouze to změní soubor na místě. Pokud nepotřebujete předávat výsledek do jiného příkazu, je to jednodušší.
ocas
$ tail -n +4 t.txt
78
90
awk
$ awk 'NR > 3 { print }' < t.txt
78
90