Как заменить «^» на пробел?

Как можно заменить пробелом в Unix?

Входные данные:

  • Grep / awk / sed для строк, состоящих только из двух букв, и строк, начинающихся с буквы и встречающих определенную длину
  • объединить два файла в один файл с комбинированными столбцами
  • Печать информации автозаполнения текущей опции в рыбной раковине
  • Как отключить позиционные параметры?
  • Regex to match =, за которым следует новая строка, чтобы оба они были удалены
  • В awk, как печатать диапазон полей с исходными разделителями $ 0 неповрежденными?
  •  ab^cd^ef 

    Вывод:

     ab cd ef 

    Я попробовал sub(/^/, " & ", str) но вывод такой же, как и вход.

  • Как установить размер окна и местоположение приложения на экране с помощью командной строки?
  • Использовать glob оболочки *, но исключить один файл и не совпадать с каталогами?
  • Как сохранить историю в истории?
  • используя find в Bash Script и проверяя, присутствует ли файл
  • преобразовать таблицу в файл ini с помощью массивов bash
  • Нужна команда / скрипт, который может генерировать вывод в одной строке со всей необходимой информацией
  • 3 Solutions collect form web for “Как заменить «^» на пробел?”

    Это работа для tr :

     $ str=ab^cd^ef $ printf '%s\n' "$str" | tr '^' ' ' ab cd ef 

    В bash , ksh93 , mksh , zsh :

     printf '%s\n' "${str//^/ }" 

    В zsh :

     print -rl -- "${str:gs/^/ /}" 

    Используя sed ,

     $ echo "ab^cd^ef" | sed 's,\^, ,g' ab cd ef 

    Уже комментируя @jasonwryan, вы можете использовать встроенную замену строки оболочки,

     $ str="ab^cd^ef" $ echo "${str//^/ }" ab cd ef 

    Другой, предложенный @someonewithpc

     $ echo "ab^cd^ef" | sed 'y,^, ,' ab cd ef 

    (Примечание: y используется для преобразования символов.)

    Предполагая, что вы хотите сделать замену в awk как ваш

     sub(/^/, " & ", str) 

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

     sub(/\^/, " & ", str) 

    заменит первое вхождение ^ внутри ^ (пространство- ^ -пространство). Используйте sub(/\^/, " ", str) для замены пробелом, а gsub(/\^/, " ", str) заменить каждое вхождение.

    Обратите внимание, что вы не можете использовать sub(/[^]/, " & ", str) поскольку ^ также является специальным внутри [...] . Однако большинство awk реализаций поддерживают sub(/[\^]/, " & ", str) .

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