Как отфильтровать строку против символов из переменной?

Поскольку вы не указали, как вы купили систему HP-UX, но, учитывая их непопулярный статус прямо сейчас, и вы не используете и не покупаете сервер HP-UX на этот раз, у меня сложилось впечатление, что вы получили от ebay или ему подобные. В этом случае он не сопровождался каким-либо соглашением о поддержке программного обеспечения, которое, скорее всего, вам понадобится.

Существует программный продукт ONCplus (открытые сетевые вычисления), который, скорее всего, установлен на вашем компьютере с более ранней версией. запустите команду

swlist -l bundle | grep -i onc

и запишите номер версии. если оно меньше ONCplus B.11.31.19.1 , возможно, проблема заключается в вашей проблеме, и вам может потребоваться верхнее обновление этого пакета, для чего, в свою очередь, потребуется контракт на поддержку программного обеспечения HP

2
04.12.2018, 14:07
2 ответа

С вашими командами что-то не так.

  • string=#@$AAA%*иa=#$@%*:здесь части $AAAи $@интерпретируются как переменные. Вы должны -заключать строки в кавычки, чтобы они интерпретировались буквально.
  • Для части sedвы просите заменить буквальную строку#$@%*в порядке ничем. Если вам нужны отдельные символы, вам нужно использовать другой формат, например. класс символов [#$@%*]. Однако в этом случае я бы просто использовал вместо этого tr -d, что намного проще.
  • Кроме того, $(…)предпочтительнее, чем обратные кавычки.
  • Я бы также использовал здесь -строку(<<<)вместо эха, просто чтобы сэкономить несколько циклов.
  • Я заметил, что Кусалананда отредактировал мой ответ, добавив "кавычки вокруг переменных. Я тоже обдумывал это, но решил, что не буду, потому что это было бы проще и не нужно для вашего конкретного вопроса. Тем не менее, я согласен, что это "правильный" способ делать вещи. Я добавил "кавычки вокруг других переменных и конструкции $(…); в этом случае они не нужны, но также являются хорошей практикой.

Следовательно, последние команды таковы:

string='#@$AAA%*'
a='#$@%*'
b="$(<<<"$string" tr -d "$a")"
echo "$b"
2
27.01.2020, 21:51

Нет необходимости запускать внешние команды при использовании «расширения параметров» последних оболочек:

echo ${string//["$a"]}
AAA
6
27.01.2020, 21:51

Теги

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