sed/awk/perl - удалите пробелы между двумя строками/словами + solaris 10

Проверьте журналы, чтобы видеть, существуют ли какие-либо знаменитые сообщения там. Попытайтесь изменить свой пароль, не говоря, что Вы не знаете это, но сброс зафиксирует пару возможных проблем. Затем проверьте Ваш /etc/passwd файл ищет строку с Вашим именем пользователя на нем и видит, существует ли что-либо необычное т.е. Ваша оболочка, устанавливаемая на 'nologin' или 'ложь'. В последний раз Вы могли удалить пользователя acct и затем добавить его назад.

2
29.08.2012, 09:16
4 ответа

Попробуйте это:

sed 's/=[ \t]*/=/' input.txt

Укажите -i опция для оперативного редактирования, если Вы хотите.


sed -i не подходящий для solaris

Или перенаправьте в другой файл и переименуйте к исходному или использующему жемчугу вместо этого:

perl -pi -e 's/=[ \t]*/=/g' input.txt
7
27.01.2020, 21:55
  • 1
    sed-i, не подходящий для solaris –   29.08.2012, 09:31
  • 2
    , обновил мой ответ. –  quanta 29.08.2012, 09:39
  • 3
    Даже с GNU sed, который может быть проблемой (когда POSIXLY_CORRECT установлен), поскольку [\t] предназначен (согласно POSIX) для соответствия обратной косой черте пространства или t. Вы хотите [[: пробел:]] вместо этого, который является POSIX. –  Stéphane Chazelas 29.08.2012, 16:31
  • 4
    Для версии жемчуга использовать s/=\s*/=/g. и если существует шанс мог бы быть пробел перед =, а также после него, использовать: s/\s*=\s*/=/g. и /g модификатор только необходим, если существует шанс мог бы быть больше чем один = символ, нуждающийся в пробеле, разделяющем на строку. –  cas 30.08.2012, 05:53
sed 's/=[[:blank:]]*/=/' < file.in > file.out
1
27.01.2020, 21:55
  • 1
    На Солярисе это не работает с /usr/bin/sed но это действительно работает с /usr/xpg4/bin/sed. –   29.08.2012, 09:59

Много способов сделать это, но самое простое и самое сырое - берут файл и передают его по каналу через sed: cat $filename | sed -e 's/ //g'

-1
27.01.2020, 21:55
  • 1
    , не уверенный, если это работает, потому что, если у меня есть 20 пространств или ВКЛАДКА, –   29.08.2012, 09:27
  • 2
    @yael, если Вы имели в виду пробел, Вы должны авеню, сказал так, поскольку это - Вы, говорят, что пробелы так этот ответ будут работать, хотя это не может сделать то, что Вы хотите, если существуют пробелы перед = знак. Необходимо прочитать sed страницу справочника в особенности о g спецификатор. кошка –   29.08.2012, 09:36
  • 3
    не требуется, sed возьмет само имя файла - sed -e 's/ //g' $filename работы –   29.08.2012, 09:37

Для solaris 11 способ преобразования нескольких пространств в одно встроенное пространство:

[commmand_with_output] | sed -e 's / * / / g'

два пробела со звездочкой

-1
27.01.2020, 21:55

Теги

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