我想将主文本文件拆分为两个文件。文本文件具有一定数量的行。让我们说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"
}'
`
答案 0 :(得分:3)
awk '{print>"file"(NR>(n/2)?2:1)}' n="$(wc -l <file)" file
答案 1 :(得分: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]
答案 2 :(得分:2)
答案 3 :(得分:1)
你也可以使用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