Как переключить первые буквы двух слов?

Bash зависит от libc, который так стар, возможности успешной компиляции очень ограничены. Возможно, сообщению нам, что является материалом Ваша версия удара, недостает, помог бы.

4
21.03.2014, 10:13
4 ответа
[119939] Вы должны использовать группы захвата. Захватите (1) первую букву слова, (2) все до первой буквы второго слова, (3) первую букву второго слова и поменяйте местами (3) и (1).

В приведенных ниже примерах предполагается, что строка начинается с незаполненного символа

Можно сказать:

или

Например,

Далее также рассматриваются такие случаи, как пробелы в начале строки и множественные пробелы между двумя словами:

Соответствующим выражением на perl было бы:

Примеры:

6
27.01.2020, 20:48
one=word ; two=phrase ; three=$one
one="${two%"${two#?}"}${one#?}"  
two="${three%"${three#?}"}${two#?}"
echo "$one $two"
> pord whrase
2
27.01.2020, 20:48

С sed:

echo 'one two' |sed -re 's/([^ ])([^ ]+)( +)([^ ])([^ ]+)/\4\2\3\1\5/'
tne owo

соответствует также пространствам переменных.

1
27.01.2020, 20:48

Возможное решение в awk :

echo 'foo bar' | awk '{x=substr($1,1,1); y=substr($2,1,1); sub(x, y, $1); sub(y, x, $2); print $0}'
boo far

Два Вызов функции substr будет извлекать первый символ из каждой записи, а два вызова функции sub заменят первое появление этих символов друг на друга.

1
27.01.2020, 20:48

Теги

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