У меня есть текстовый файл (фрагмент ниже), содержащий некоторые общедоступные данные отчета о корпоративных доходах, отформатированные следующим образом:
Current assets:
Cash and cash equivalents
$ 21,514 $ 21,120
Short-term marketable securities
33,769 20,481
Accounts receivable
12,229 16,849
Inventories
2,281 2,349
, и я пытаюсь сделать следующее (с помощью sed):: если текущая строка начинается с заглавной буквы, а следующая строка начинается с пробела, скопируйте последние N символов из следующей строки в последние N столбцов текущей строки, а затем удалите следующую строку.Я делаю это так, потому что в файлах есть другие строки, начинающиеся с пробела, которые я хочу игнорировать.Результаты должны выглядеть следующим образом:
Current assets:
Cash and cash equivalents $ 21,514 $ 21,120
Short-term marketable securities 33,769 20,481
Accounts receivable 12,229 16,849
Inventories 2,281 2,349
Самое близкое к тому, что я получил, это то, что я хочу:
sed -i -r ':a;N;$!ba;s/[^A-Z]*\n([[:space:]])/\1/g' file.txt
, и я считаю, что шаблон соответствует, но последующая замена действительно портит выравнивание столбцов чисел.Когда я только начинал, это казалось простой операцией, но часы поиска и экспериментов не помогли.Я открыт для любых решений, которые используют что-то другое, кроме sed, но предпочли бы, чтобы это было строго bash.Большое спасибо!