Как вырезать файл данных, столбцы которого разделены пробелами

У меня есть файл данных с 2 столбцами

1.0000    9.9398383
1.4399    8.0000000
2.5688    7.9393838

1.0000    4.0000000
1.4399    9.0094949
2.5688    3.9932323

1.0000    8.9393993
1.4399    7.3838473
1.5688    2.8337738

Я хочу создать другие файлы с этими данными, разделенными пустой строкой, но я не знаю, как вырезать файл после или перед пустым линия, пожалуйста, помогите.

0
задан 10 May 2019 в 19:11

5 ответов

Хотя я, вероятно, сам использовал бы Awk для этой задачи, другой вариант - csplit:

csplit file '/^$/' '{*}'

разделит file на части, ограниченные шаблоном регулярного выражения /^$/, повторяя столько максимально возможное количество раз {*}

По умолчанию выходные файлы будут иметь имена xx00, xx01 и т. д., но вы можете изменить как префикс, так и формат суффикса, как описано в man csplit, например [ 1115]

csplit -f 'new' -b '_%d' file '/^$/' '{*}'

для имен вида new_0, new_1 и т. Д.

(Для кусков фиксированной длины вы можете рассмотреть использование простого split, а не основанного на регулярных выражениях csplit).

0
ответ дан 10 May 2019 в 19:11
awk '/^$/{n++} ; {print $0 >> "fnew"n}' dfile

Возьмет данные из dfile и поместит строки в fnew, fnew1...

less dfile
1.0000    9.9398383
1.4399    8.0000000
2.5688    7.9393838

1.0000    4.0000000
1.4399    9.0094949
2.5688    3.9932323

1.0000    8.9393993
1.4399    7.3838473
1.5688    2.8337738

less fnew
1.0000    9.9398383
1.4399    8.0000000
2.5688    7.9393838

less fnew1
1.0000    4.0000000
1.4399    9.0094949
2.5688    3.9932323
4
ответ дан 10 May 2019 в 19:11

Может быть, что-то подобное?

cat data_2_cut.txt | cut -d "" -f1 >> first_column_file.txt

cat data_2_cut.txt | cut -d "" -f2 >> second_column_file.txt

0
ответ дан 10 May 2019 в 19:11

Или вот так: данные - это ваш файл с двумя столбцами; первый и второй ряд разделены пробелом.

Сохранить первую строку в файл 1st:

awk -F " " '{print $1}' data > 1st

Сохранить вторую строку в файл 2nd:

awk -F " " '{print $2}' data > 2nd
0
ответ дан 10 May 2019 в 19:11
perl -00 -lanE 'open my $fh, ">", "${ARGV}_$."; say $fh $_; close $fh' file

где:

  • -00 пустые строки использования как разделитель записей
  • -lanE действительно наполняет (главным образом, цикличное выполнение по записям во входе)
  • $ARGV текущее имя файла
  • $. текущее рекордное число
  • $_ текущая запись
1
ответ дан 10 May 2019 в 19:11

Другие вопросы по тегам:

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