У меня есть два текстовых файла, каждый из которых содержит блок текста, разделенный пустыми строками. Блоки различаются по размерам.Объединить два текстовых файла по блоку
# ::id 10
# ::snt Yes !
...multiple lines of unstructured data from file 1...
# ::id 11
# ::snt said Lion .
...multiple lines of unstructured data from file 1...
# ::id 12
# ::snt Yes yes !
...multiple lines of unstructured data from file 1...
# ::id 13
# ::snt said Tiger .
...multiple lines of unstructured data from file 1...
и аналогично другим
# ::id 10
# ::snt No !
...multiple lines of unstructured data from file 2...
# ::id 11
# ::snt said Monkey .
...multiple lines of unstructured data from file 2...
# ::id 12
# ::snt No no !
...multiple lines of unstructured data from file 2...
# ::id 13
# ::snt said Donkey .
...multiple lines of unstructured data from file 2...
Я хочу, чтобы объединить два блока, но сортировать их по # ::id
. Кроме того, мне нужно обеспечить порядок блоков данных file1 перед блоками данных file2. Таким образом, конечный результат должен быть примерно таким:
# ::id 10
# ::snt Yes !
...multiple lines of unstructured data from file 1...
# ::id 10
# ::snt No !
...multiple lines of unstructured data from file 2...
# ::id 11
# ::snt said Lion .
...multiple lines of unstructured data from file 1...
# ::id 11
# ::snt said Monkey .
...multiple lines of unstructured data from file 2...
# ::id 12
# ::snt Yes yes !
...multiple lines of unstructured data from file 1...
# ::id 12
# ::snt No no !
...multiple lines of unstructured data from file 2...
# ::id 13
# ::snt said Tiger .
...multiple lines of unstructured data from file 1...
# ::id 13
# ::snt said Donkey .
...multiple lines of unstructured data from file 2...
Как это сделать? Все, что будет работать bash
, sed
, awk
'awk' позволяет вам использовать регулярное выражение как разделитель записи (RS). Вы можете прочитать файл в массиве и отсортировать его с помощью 'asort', например. –
Не могли бы вы предоставить синтаксис? Мой 'awk' немного ржавый. Проблема в том, что я хочу _merge_ двух текстовых файлов в один. Как мне это сделать? – Sudhi
Основная идея - прочитать оба файла в массиве и отсортировать его. Однако если файлы очень большие, это не будет действительной стратегией. –