Bash incrementing bash string - из текстового файла

На основе ваших образцов кажется, что вы действительно хотите добавить следующую строку (удаление дополнительного пробела), если текущая строка имеет ровно 78 символов:

$ sed '/.\{78\}/{N;s/\n //;}' file.ldif
description: Gestion des acces de la CR 902 sur les environnements Big Data en ecriture
distinguishedName: CN=GU_902_A_D5_IC_W,OU=Groupes,OU=CR 902,OU=CAM,DC=LDSCOMPTES
instanceType: 4
whenCreated: 20180115131643.0Z

A возможно, менее хрупкий подход может заключаться в том, чтобы приспособить 40. Приложите строку к предыдущей, если она начнется с знака равенства «=» от Sed One-Liners Питера Круминьса «Объяснение», чтобы присоединиться к следующей строке, когда она начинается с пробела

sed -e :a -e '$!N;s/\n //;ta' -e 'P;D' file.ldif

ПРИМЕЧАНИЕ. Если ваши файлы используют окончание строк CRLF в стиле DOS / Windows, тогда вам нужно будет заменить \n в приведенных выше выражениях на \r\n, т. е.

[ f3]

или

sed -e :a -e '$!N;s/\r\n //;ta' -e 'P;D' file.ldif
0
задан 2 February 2018 в 21:09

3 ответа

[F1]
0
ответ дан 22 May 2018 в 13:21
  • 1
    Просто FYI, never используют цикл for для итерации по файлу и, конечно, не for line in $(cat file). Вместо этого вы должны использовать while read line; do ... ;done < file. См. mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3.29 – terdon♦ 6 February 2018 в 13:35
[F1]
0
ответ дан 17 July 2018 в 21:43
[F1]
0
ответ дан 23 July 2018 в 22:20

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

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