Перетворення рядків у вхідний файл


1

У мене є текстовий файл file1.txtна Unix. Я хотів би створити ще один файл file2.txt, в якому я змінюю всі групи рядків, що мають цей формат (взяті з іспиту з декількома варіантами)

a. [first choice]
b. [second choice]
c. [third choice]

до

[first choice] [second choice] [third choice]

Як я міг це зробити?

EDIT : Приклад є

What is the value of three plus five?
a. six
b. seven
c. eight

This line is not so relevant.
blah blah

What is the capital of England?
a. London
b. Birmingham
c. New York

Це слід перетворити на

What is the value of three plus five?
six seven eight

This line is not so relevant.
blah blah

What is the capital of England?
London Birmingham New York    

Найпростіше скористатися awk or perl для цього
Томаш

Відповіді:


2

Якщо припустити, що це завжди 3 варіанти a., b.і c.спробуйте це:

sed '/^[a-c]\. /{N;N;s/[a-c]\. / /g;s/[\r\n]//g;s/^ //}' file1.txt > file2.txt

Це працює, захоплюючи три лінії в той час , використовуючи Nкоманду, замінивши простір для всіх a., b.і c.входжень, видаляючи всі рядки закінчується , і, нарешті, видаленням останнього залишився додаткового простору на початку рядка.


Ніколь, дякую за вашу відповідь! Могли б ви надати версію для 5 варіантів теж ( a., b., c., d., і e.)? Зараз я не розумію вашу команду, тому я не можу її сама змінити, але обіцяю, що незабаром її вивчу.
Міка Х.

Якщо це лише завжди завжди 5 варіантів, а не 3, то просто додайте до нього ще дві N;команди. Якщо це змінна кількість варіантів від одного запитання до іншого, це можна зробити за допомогою ітерації (циклу) та використання буфера утримування, але це велика робота.
Ніколь Гамільтон

1
І [ac] to [ae]? (Також намагається вирішити це як спосіб навчання)
Хеннес

ЛОЛ. Так. Ти мене зрозумів. :)
Ніколь Гамільтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.