3

本文ファイルを 2 つのファイルに分割したいと考えています。テキスト ファイルには特定の行数があります。NRとしましょう。ファイル 1 とファイル 2 という 2 つの異なるファイルが必要です。ファイル 1 は、本文ファイルの上半分です。ファイル 2 は、本文ファイルのもう半分です。

例:

本文ファイル

aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff

メインのテキスト ファイルから作成された 2 つのファイルが必要です。

ファイル 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

GNU 分割を使用する

例:

split -n 2 <file> # creates xaa & xab
于 2014-01-15T17:06:22.970 に答える
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 に答える