Как удалить пробелы из выбранных строк

У меня есть небольшая проблема в Linux с удалением пробелов из выделенных строк из моего файла.

Например:

fhtsqeghcht fhtrfhvfdgn qazxswedcvf fhbchthbvhf plkoijuhygt tfrdcvbhnju 

и теперь, как я должен удалить пробелы из строк 2, 4 и 5? Кроме того, как это будет искать третью строку?

  • Как вы можете запретить Linux рисовать программу Java?
  • Как легко узнать, смонтировано ли какое-либо блочное устройство (или его часть)
  • Как я могу получить внешний IP-адрес в сценарии оболочки?
  • Нужна помощь в установке графического драйвера NVIDIA для конфигурации Optimus
  • Linux, столкнувшись с проблемой добавления пользователя во вторую группу
  • Можно ли просматривать носители на консоли?
  • Как сделать несколько каталогов одновременно в каталоге?
  • Помогите понять Iptables Прямая цепочка с DNAT
  • 5 Solutions collect form web for “Как удалить пробелы из выбранных строк”

    Использование awk

    Чтобы удалить пробелы из строк 2, 4 и 5:

     $ awk 'NR==2 || NR==4 || NR==5 {gsub(/ /,"");} 1' file fhtsqeghcht fhtrfhvfdgn qazxswedcvf fhbchthbvhf plkoijuhygt tfrdcvbhnju 

    В awk NR – номер строки. Логическое выражение NR==2 || NR==4 || NR==5 NR==2 || NR==4 || NR==5 NR==2 || NR==4 || NR==5 выбирает интересующие вас линии. Команда gsub(/ /,"") удаляет пробелы из этих строк. Условие 1 является критической стенографией awk для печати строки.

    Использование sed

    Чтобы удалить пробелы из строк 2, 4 и 5:

     $ sed '3n; 2,5 s/ //g' file fhtsqeghcht fhtrfhvfdgn qazxswedcvf fhbchthbvhf plkoijuhygt tfrdcvbhnju 

    Здесь мы используем немного другую логику: мы удаляем пробелы для всех строк от 2 до 5, кроме строки 3. Это работает следующим образом: выражение 3n сообщает sed, что, когда дело доходит до строки 3, распечатайте его и перейдите к следующей строке. В противном случае команда `2,5 s / // g сообщает sed удалять пробелы со всех строк от 2 до 5.

    Чтобы удалить все пробелы, а не просто пробелы

     awk 'NR==2 || NR==4 || NR==5 {gsub(/[[:space:]]/,"");} 1' file 

    Или:

     sed '3n; 2,5 s/[[:space:]]//g' file 

    Другой вариант для awk

     awk 'NR~/^[245]$/{$1=$1}1' OFS='' file 

    Вы можете сделать это с помощью оболочки. В некоторых случаях это даже стоило бы этого сделать. Наверное, не часто.

     sh -fc <in >out ' for IFS do read -rl printf %s $l;echo done; exec cat ' -- '' \ '' \ \ 

     fhtsqeghcht fhtrfhvfdgn qazxswedcvf fhbchthbvhf plkoijuhygt tfrdcvbhnju 

    С perl :

     perl -lpe 'grep { /^$.$/ } (2,4,5) and s/\s//g' 

    или с экспериментальным оператором smartmatch :

     perl -lpe '$. ~~ [2,4,5] and s/\s//g' 

    С awk :

     awk 'NR==2 || NR==4 || NR==5{gsub(/\s/, "")} 1' file 

    Вывод :

      fhtsqeghcht fhtrfhvfdgn qazxswedcvf fhbchthbvhf plkoijuhygt tfrdcvbhnju 

    Кто-то должен был правильно представлять «tr», заявить об этом решение, так что:

      tr -d [:space:] 

    ИЛИ

      tr -d [:blank:] 

    Предполагая, что источником текста является файл ich:

      cat ich | tr -d [:space:] 

    Это создает одну строку, без пробела:

    fhtsqeghchtfhtrfhvfdgnqazxswedcvffhbchthbvhfplkoijuhygttfrdcvbhnju

    Если вы хотите сохранить линии, используйте этот вариант:

      cat ./ich | tr -d [:blank:] 

    который производит этот выход (за вычетом дополнительной строки строки между линиями)

    fhtsqeghcht

    fhtrfhvfdgn

    qazxswedcvf

    fhbchthbvhf

    plkoijuhygt

    tfrdcvbhnju

    Блестящие ответы, мои уважаемые сверстники, каждый!

    F.

    Interesting Posts

    OSX: Grammarian не удалит

    какую команду я буду использовать, чтобы увидеть все строки из файла, начиная с строки, которую я нашел с помощью grep

    Возобновление экрана с включенным символом ввода символов UTF8

    Дифференцирование между запуском и получением источника в сценарии оболочки bash?

    X-сервер на slackware 14 и модуле poulsbo (gma500)

    «Permission denied, try again» при передаче файлов с помощью scp

    dnf эквивалент "yum update –security"

    Изменение IP-адреса в терминале

    Переключение нескольких графических режимов при запуске

    Вернуть код выхода без повреждения терминала вызывающего абонента?

    Как отключить (удалить) специальную ссылку «.», Созданную для папки?

    Как заставить CUPS отображать USB-принтер как отключенный, когда он отключен?

    В чем разница между дистрибутивами «jessie» и «jessie-updates» в /etc/apt/sources.list?

    Мост OpenVPN. Не удается получить доступ к машинам в локальной сети

    Как изменить размер разделов на полный образ жесткого диска?

    Linux и Unix - лучшая ОС в мире.