我正在寻找一种在 unix 中将文件拆分为给定行号的两个文件的方法。
split -l 100 file_name接近我正在寻找的内容,但是此命令会创建多个文件,每行 100 行。我正在寻找一个命令,可以将一个文件在给定的行号处拆分为两个文件。有没有办法在unix中做到这一点?
Rub*_*ens 19
更严格的解决方案:
(head -100 > f1.txt; cat > f2.txt) < input.txt
Run Code Online (Sandbox Code Playgroud)
che*_*ner 14
使用awk,这样您只需通过输入文件一次。下面假设您需要第一个文件中的前 122 行,第二个文件中的其余部分。
awk 'NR < 123 { print >> "top_file"; next } {print >> "bottom_file" }' file_name
Run Code Online (Sandbox Code Playgroud)
小智 9
您可以使用head和tail来获取这两个部分:
head -n K file_name > top_file
tail -n L file_name > bottom_file
Run Code Online (Sandbox Code Playgroud)
其中K是行号,L是从底部开始的行数(总行数 - K)。
(您可以使用 获得总行数wc -l file_name)。
您可以使用csplit(如果可用)来做到这一点:
csplit file N+1
Run Code Online (Sandbox Code Playgroud)
将文件分成两部分,一部分到(并包括)行号N,另一部分从行号N+1到最后一行。
如果要拆分为(但不包括)行号N:
csplit file N
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26925 次 |
| 最近记录: |