Если вам нужно одно выражение, вы можете сделать:
sed -i 's#/client/[^/]*#/client/12x_64#g' config*
Я использовал / client / [^ /] *
в качестве маркера, чтобы найти то, что мы хотим заменить (т.е. все, что находится после / client /
, но до следующего /
), но мы могли бы сделать client / [^ / ] * / instance
, если это позволяет избежать сопоставления других элементов в файле.
Да, если локаль en _US.utf8 (например ), обе строки кажутся равными:
$ printf "%s\n" "いあ" "あい" "いあ" "あい"
いあ
あい
いあ
あい
$ LC_COLLATE=en_US.utf8 bash -c '
printf "%s\n" "いあ" "あい" "いあ" "あい" |
sort |
uniq '
いあ
Однако, если язык изменить на ja _JP, все работает правильно:
$ LC_COLLATE=ja_JP.utf8 bash -c '
printf "%s\n" "いあ" "あい" "いあ" "あい" |
sort |
uniq '
あい
いあ
Интересно отметить, что (в этом случае )локаль C также работает:
$ LC_COLLATE=C bash -c '
printf "%s\n" "いあ" "あい" "いあ" "あい" |
sort |
uniq '
あい
いあ
Это только показывает, что en _US отсутствует порядок сортировки для некоторых кодовых точек.