удалить возврат каретки с помощью bash

Я не знаю, следует ли отмечать это как ответ .....

За последние пару месяцев я не смог получить надстройку браузера для работы в Firefox, как я описал в моем оригинальном посте. День за днем ​​я пытался, но это не сработало. Теперь, сегодня (11 марта 2018 года), он работает по какой-то неизвестной, загадочной причине.

0
задан 30 January 2018 в 17:06

6 ответов

На основе ваших образцов кажется, что вы действительно хотите добавить следующую строку (удаление дополнительного пробела), если текущая строка имеет ровно 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
3
ответ дан 22 May 2018 в 15:12
  • 1
    +1 для альтернативного решения, путь лучше, чем подсчет символов! – dessert 30 January 2018 в 16:40
  • 2
    @steeldriver Я получил тот же результат, что и у меня с десертным ответом – HISI 30 January 2018 в 16:45
  • 3
    возможно, что-то не так с My file – HISI 30 January 2018 в 16:45
  • 4
    @steeldriver, возможно, это проблема, я должен проверить, что один – HISI 30 January 2018 в 16:50
  • 5
    @YassineSihi Если для вас работает второй подход, то это способ пойти и должен быть принят ИМО. Примите то, что (а не кто!) Помог вам больше всего. Если мой ответ заслуживает этого, тогда дайте ему верх, но, пожалуйста, не чувствуйте себя обязанным. О, пожалуйста, удалите все (сейчас) ненужные комментарии. – dessert 30 January 2018 в 17:40

На основе ваших образцов кажется, что вы действительно хотите добавить следующую строку (удаление дополнительного пробела), если текущая строка имеет ровно 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, т. е.

sed '/.\{78\}/{N;s/\r\n //;}' file.ldif

или

sed -e :a -e '$!N;s/\r\n //;ta' -e 'P;D' file.ldif
3
ответ дан 17 July 2018 в 21:55

На основе ваших образцов кажется, что вы действительно хотите добавить следующую строку (удаление дополнительного пробела), если текущая строка имеет ровно 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, т. е.

sed '/.\{78\}/{N;s/\r\n //;}' file.ldif

или

sed -e :a -e '$!N;s/\r\n //;ta' -e 'P;D' file.ldif
3
ответ дан 23 July 2018 в 22:32

Вы можете использовать awk для этого:

awk '{substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Эта команда просто проверяет, не является ли символ каждой строки пустым и печатает строку с или без разрыва строки. [!d1 ]

Из вашего примера я понял, что был добавлен отступ (кто это делает???), чтобы удалить эти ведущие дополнительные пробелы, изменив команду:

awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Если у вас есть нежелательные Возврат каретки в файл также удаляет их:

awk '{gsub(/\r/,"",$0);gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Пример run

$ <test awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'
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
2
ответ дан 22 May 2018 в 15:12
  • 1
    команда ставит вторую строку в начале первой строки не в конце – HISI 30 January 2018 в 16:32
  • 2
    Я помещаю это: cat brutes.txt | awk '{gsub (/ ^ /, & quot ;, $ 0); substr ($ 0,78,78) == " " " \ " \ n ": a = " " printf "% s " a, $ 0} ' – HISI 30 January 2018 в 16:40
  • 3
    и это результат: ecritureon: Gestion des acces de la CR 902 sur les environnements Big Data en – HISI 30 January 2018 в 16:41
  • 4
    тот же результат последнего – HISI 30 January 2018 в 16:42
  • 5
    Я думаю, что проблема заключается не в файле awk – HISI 30 January 2018 в 16:48

Вы можете использовать awk для этого:

awk '{substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Эта команда просто проверяет, не является ли символ каждой строки пустым и печатает строку с или без разрыва строки.

Из вашего примера я понял, что был добавлен отступ (кто это делает???), чтобы удалить эти ведущие дополнительные пробелы, изменив команду:

awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Если у вас есть нежелательные Возврат каретки в файл также удаляет их:

awk '{gsub(/\r/,"",$0);gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Пример run

$ <test awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}' 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
2
ответ дан 17 July 2018 в 21:55

Вы можете использовать awk для этого:

awk '{substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Эта команда просто проверяет, не является ли символ каждой строки пустым и печатает строку с или без разрыва строки.

Из вашего примера я понял, что был добавлен отступ (кто это делает???), чтобы удалить эти ведущие дополнительные пробелы, изменив команду:

awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Если у вас есть нежелательные Возврат каретки в файл также удаляет их:

awk '{gsub(/\r/,"",$0);gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}'

Пример run

$ <test awk '{gsub(/^ /,"",$0);substr($0,78,78)==""?a="\n":a="";printf "%s"a,$0}' 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
2
ответ дан 23 July 2018 в 22:32
  • 1
    команда ставит вторую строку в начале первой строки не в конце – HISI 30 January 2018 в 16:32
  • 2
    Я помещаю это: cat brutes.txt | awk '{gsub (/ ^ /, & quot ;, $ 0); substr ($ 0,78,78) == & quot; & quot; & quot; \ & quot; \ n ": a = & quot; & quot; printf & quot;% s & quot; a, $ 0} ' – HISI 30 January 2018 в 16:40
  • 3
    и это результат: ecritureon: Gestion des acces de la CR 902 sur les environnements Big Data en – HISI 30 January 2018 в 16:41
  • 4
    тот же результат последнего – HISI 30 January 2018 в 16:42
  • 5
    Я думаю, что проблема заключается не в файле awk – HISI 30 January 2018 в 16:48

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

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