3

我想将一个主文本文件分成两个文件。文本文件有一定数量的行。让我们说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"
}'

`

4

4 回答 4

3
awk '{print>"file"(NR>(n/2)?2:1)}' n="$(wc -l <file)" file
于 2013-02-22T18:43:10.653 回答
2

您也可以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
于 2013-02-22T16:47:46.327 回答
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]
于 2013-02-22T16:58:36.990 回答
2

使用GNU 拆分

例子:

split -n 2 <file> # creates xaa & xab
于 2014-01-15T17:06:22.970 回答