Удалите Возврат Управления и строки слияния в одном текстовом файле и ограничьте количество символов

Я бледный для удаления Возврата Управления и строк слияния в одном текстовом файле и предельном количестве символов

input.txt, содержащий:

comment 1
comment 2 
...
comment n 

output.txt должен каждый представлять в виде строки:

comment 1 comment 2 ... commnet n

НО ouput.txt должен быть ограничен т.е. 32 из символов:

comment 1 comment 2 comment 3 co

Я еще могу использовать sed, awk TR или что-то?

1
задан 10 September 2017 в 22:42

3 ответа

head -c 32 input.txt | tr '\n' ' ' > output.txt
  • head -c 32 отбрасывания все кроме первых 32 байтов.

  • tr '\n' ' ' замены все символы новой строки с пробелами.

, Если Вы хотите ограничить символы вместо байты в случае многобайтовых кодировок символов, можно использовать grep вместо этого:

tr '\n' ' ' < input.txt | grep -oEe '^.{,32}' > output.txt
1
ответ дан 7 December 2019 в 15:30

Awk должен быть прекрасным. Один путь:

$ echo -n "comment 1\rcomment 2\r...\rcomment n\r" > input.txt
$ cat input.txt | awk -v FS="" -v RS="" '{for (i=1;i<=32;i++) printf ($i == "\r")? "" : $i}' > output.txt
$ cat output.txt 
comment 1comment 2...comment 

Объяснение: по умолчанию вход процессов awk линию за линией, с одной строкой, названной запись ; каждая строка обработала столбец столбцом с отдельным столбцом, названным поле . Каждый поле отнесено переменными, запускающимися с 1, например, 1$, 2$, 3$ †¦

, Таким образом, Вы изменяете поведение по умолчанию установкой F ield S eparator к "", заставляя awk обрабатывать познаковый материал. Затем Вы устанавливаете Record Separator на "", таким образом, можно обратиться к символам всего текста сразу (т.е. не пишущий код для обработки материала линию за линией) .

Наконец, можно легко воздействовать на символы, таким образом, Вы циклично выполняетесь по полям (т.е. символы) и печатаете только, когда символ не является возвратом каретки.

0
ответ дан 7 December 2019 в 15:30
tr '\n' ' ' < in.txt | cut -c -32
  • tr '\n' ' ': удалите новые строки из входного текста
  • cut -c -32: ограничьте вывод 32 символами
0
ответ дан 7 December 2019 в 15:30

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

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