删除一定行数之后的所有行

D-T*_*D-T 5 command-line text-processing

如何在 csv 文件中截断 1000 行后?目标是仅保留文件中的前 1000 行并删除所有其他行。

pLu*_*umo 13

您可以使用head -n <n>打印第一n行:

head -n 1000 "file.csv"
Run Code Online (Sandbox Code Playgroud)

要写入文件,请使用重定向:

head -n 1000 "file.csv" > "some_other_file.csv"
Run Code Online (Sandbox Code Playgroud)

要覆盖同一个文件,需要先写入临时文件,然后覆盖原始文件...

head -n 1000 "file.csv" > "file.csv.tmp" && mv "file.csv.tmp" "file.csv"
# or more safe use mktemp
tmpfile=$(mktemp)
head -n 1000 "file.csv" > "$tmpfile" && mv "$tmpfile" "file.csv"
Run Code Online (Sandbox Code Playgroud)

...或使用( -->sponge的一部分)moreutilssudo apt install moreutils

head -n 1000 "file.csv" | sponge "file.csv"
Run Code Online (Sandbox Code Playgroud)

sed使用 GNU 版本的和就地编辑文件的其他(不可移植)选项awk

sed -i 1000q "file.csv"
# or
sed -n -i '1,1000p' "file.csv"
# or
sed -i '1001,$d' "file.csv"
# or
awk -i inplace 'NR>1000{exit}1' "file.csv"
Run Code Online (Sandbox Code Playgroud)


D-T*_*D-T 6

在终端运行:

head -n 1000 /path/to/file.csv
Run Code Online (Sandbox Code Playgroud)

要将结果保存在单独的文件中,请运行:

head -n 1000 /path/to/file.csv > /path/to/new_file_with_first_1000_linces.csv
Run Code Online (Sandbox Code Playgroud)