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

У меня есть файл данных с 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.05.2019, 19:11

5 ответов

perl -00 -lanE 'open my $fh, ">", "${ARGV}_$."; say $fh [110] 

где:

  • -00 использует пустые строки в качестве разделителя записей
  • -lanE делает вещи (в основном, перебирая записи на входе) [ 117]
  • $ARGV - текущее имя файла
  • $. - номер текущей записи
  • [110]

    где:

    • [111] использует пустые строки в качестве разделителя записей
    • [112] делает вещи (в основном, перебирая записи на входе) [ 117]
    • [113] - текущее имя файла
    • [114] - номер текущей записи
    • [115] - текущая запись
    - текущая запись
; close $fh' file

где:

  • -00 использует пустые строки в качестве разделителя записей
  • -lanE делает вещи (в основном, перебирая записи на входе) [ 117]
  • $ARGV - текущее имя файла
  • $. - номер текущей записи
  • [110]

    где:

    • [111] использует пустые строки в качестве разделителя записей
    • [112] делает вещи (в основном, перебирая записи на входе) [ 117]
    • [113] - текущее имя файла
    • [114] - номер текущей записи
    • [115] - текущая запись
    - текущая запись
1
ответ дан 25.10.2019, 11:28
awk '/^$/{n++} ; {print [110] >> "fnew"n}' 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
ответ дан 25.10.2019, 11:28

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

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

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

-1
ответ дан 25.10.2019, 11:28

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

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

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

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

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

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

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

0
ответ дан 25.10.2019, 11:28

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

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

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

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

awk -F " " '{print $2}' data > 2nd
-1
ответ дан 25.10.2019, 11:28

Теги

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