回答:
ファイルがシンボリックリンクまたはハードリンクでない限り、sed、tail、またはawkを使用できます。以下の例。
$ cat t.txt
12
34
56
78
90
$ sed -e '1,3d' < t.txt
78
90
一時ファイルなしでインプレースでsedを使用することもできますsed -i -e 1,3d yourfile
。これは何もエコーせず、ファイルをその場で変更するだけです。結果を別のコマンドにパイプする必要がない場合、これは簡単です。
$ tail -n +4 t.txt
78
90
$ awk 'NR > 3 { print }' < t.txt
78
90
sed -i
。ほとんどの実装では、ファイルを削除して新しいファイルに置き換えますが、元のファイルを別の場所に残してしまうため、リンクでは機能しません。
表形式の行がタブ文字を含むものである場合:
grep '␉' <input_file >output_file
(␉
リテラルタブ文字である)または同等
sed -n '/␉/p' <input_file >output_file
bash / ksh / zshスクリプトで$'\t'
は、タブ用に記述できます(例:grep $'\t'
または)sed -n $'/\t/p'
。
ファイルの先頭から10行を削除する場合:
tail -n +11 <input_file >output_file
(+11
10行を削除することに注意してください。これ+11
は、「11行目から」という意味であり、1行目から末尾に番号を付けます)または
sed '1,10d' <input_file >output_file
Linuxでは、GNU sedの-i
オプションを利用して、所定の場所でファイルを変更できます。
sed -i -n '/\t/p' *.txt
または、シェルループと一時ファイルを使用できます。
for x in *.txt; do
tail -n +11 <"$x" >"$x.tmp"
mv "$x.tmp" "$x"
done
または、その場でファイルを変更したくないが、代わりに別の名前を付けたい場合:
for x in *.txt; do
tail -n +11 <"$x" >"${x%.txt}.data"
done
sed -i -e 1,3d yourfile
。これは何もエコーせず、ファイルをその場で変更するだけです。結果を別のコマンドにパイプする必要がない場合、これは簡単です。