Разделите файл на два

На glibc удерживается часовой пояс по умолчанию /etc/localtime. Это может быть символьной ссылкой на файл в tz базе данных (в этом случае, Вы могли просто readlink), но нет никакой гарантии - это может быть hardlink или даже копия. В этом случае необходимо было бы считать файл и затем сравнить его со всеми файлами в tz каталоге данных.

Я не уверен, какая цель Вы думаете, получая значение America/New_York будет служить.

18
06.05.2016, 20:01
4 ответа

Самый простой способ, вероятно, использовать голову и хвост :

$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2

Это поставит первые 1000 строк из входного файла в выход1, а все строки от 1001 до конца в выход2

30
27.01.2020, 19:45

Простой способ сделать то, что просит вопрос, за одну команду:

awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile

или, для тех из вас, кто действительно ненавидит печатать длинные, интуитивно понятные команды,

awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile
4
27.01.2020, 19:45

Я думаю, что SPLIT Вы лучший подход.

Попробуйте использовать опцию -L XXXX -L XXXX , где XXXX - это количество строк, которые вы хотите в каждом файле (по умолчанию 1000).

Вы можете использовать опцию -N YY , если вы больше обеспокоены количеством созданных файлов. Использование -N 2 будет разделить ваш файл только в 2 частях, независимо от количества строк в каждом файле.

Вы можете рассчитывать количество строк в вашем файле с WC -L Filename . Это команда «WordCount» с вариантом линий.

Список литературы

  • Человек Сплит
  • Человек WC
13
27.01.2020, 19:45

Это задание для csplit:

csplit -s infile 1001 

будет sнеправильно разбивать infile, первая часть xx00 - до, но не включая строку 1001, а вторая часть xx01 - оставшиеся строки.
Вы можете воспроизводить опции, если вам нужны разные имена выходных файлов, например, используя -f и указав префикс -f:

csplit -sf piece. infile 1001 

создает два файла с именами piece.00 и piece.01


С помощью умной головки Вы также можете сделать что-то вроде:

{ head -n 1000 > 1st.out; cat > 2nd.out; } < infile
8
27.01.2020, 19:45

Теги

Похожие вопросы