Answers:
只要文件不是符号链接或硬链接,就可以使用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
或者,您可以使用Shell循环和临时文件:
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
回声“ a \ nb” | sed'1d'#删除第一行
猫list.txt | sed'1d'> list.csv#读取list.txt并写入list.csv,不带第一行
其他有用的命令:
grep'^ |' #查找第一个字符(pipe |)
sed's / | // g'#删除管道
sed's / // g'#删除空间
sed -i -e 1,3d yourfile
。这不会回显任何内容,只会在适当位置修改文件。如果您不需要将结果通过管道传递到另一个命令,这将更加容易。