我想把一个主文本文件分割成两个文件。这个文本文件有一定的行数,比如说NR.我需要两个不同的文件,分别称为文件1和文件2。让我们说NR.我需要两个不同的文件称为文件1和文件2。文件1是主文本文件的上半部分。文件2是主文本文件的另一半。
例子
主文本文件
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
我需要从主文本文件创建两个文件。
文件1应该是:
aaaaa
bbbbb
ccccc
文件2应该是:
ddddd
eeeee
fffff
我试过用awk. 但它没有工作。谢谢大家。
问候。
这就是我所做的。
total_lines=$(cat ${band_file} | wc -l)
echo $total_lines
cat $band_file | awk '
{
if(NR<=total_lines/2)
print > "file 1"
else
print > "file 2"
}'
`
只使用 awk
:
awk '
{
arr[NR]=$0
}
END{
for (i=0; i<=NR; i++) {
if (i < NR/2) {
print arr[i] > "file1"
}
else {
print arr[i] > "file2"
}
}
}
' file.txt
到目前为止。
$ ls file[0-9]
awk '{print>"file"(NR>(n/2)?2:1)}' n="$(wc -l <file)" file
你也可以用 split
为这。
split -n2 infile
xaa
现在包含:
aaaaa
bbbbb
ccccc
和 xab
包含。
ddddd
eeeee
fffff
你当然可以使用awk,这里有一个相当有效的替代方案。
awk -v len=$(wc -l < infile) '
BEGIN { outfile = "file1" }
NR>len/2 { outfile = "file2" }
{ print $0 > outfile }
' infile