В Debian большинство библиотек устанавливаются по пути, зависящему от архитектуры; предполагая, что вы используете типичный 64-битный ПК (архитектура amd64
в Debian), вы найдете libQtCore.so
и его друзей в / usr / lib / x86_64 -linux-gnu
.
Чтобы выяснить это в общих чертах, вы можете использовать dpkg-architecture -qDEB_HOST_MULTIARCH
(из пакета dpkg-dev
). Когда вы ищете файлы, обратите внимание на apt-file
: он может искать файлы во всех доступных пакетах в Debian, а apt-file search libQtCore
находит libqtcore4
и libqt4-dev
в секундах.
Возможно, использовать y //
(встроенная команда tr в sed) вместо s ///
:
$ echo clayii | sed -e '/clayii/ y/clayk/kieio/'
kieiii
Обратите внимание, что команда y //
будет по-прежнему применяться ко всей строке, а не только к подходящее слово.
можно зациклить над ним:
echo here is a pat and a tern and a pattern |
sed -e'1{H;x;s/\(.\).*/\1pattern\1replace/;x;}' \
-eG -e'/\(.*\)\(.*\n\)\(\n\1\)\n/!{P;d;}' \
-e's//\3\2/;t-' \
-e:- -e's/\(\n\)\(.\)\(.*\n\)\(.\)/\4\1\3/;t-' \
-e's/\n//;P;d'
here is a pat and a tern and a replace
Это заменяет char на char, идущую слева направо. При каждой замене первый разделитель сдвигается вправо от заменяемого символа. Вы можете понять, что я имею в виду, если вставите команду l
ook непосредственно перед циклом t
ested подстановка после -e: -
:
here is a pat and a tern and a \npattern\nreplace$
here is a pat and a tern and a r\nattern\neplace$
here is a pat and a tern and a re\nttern\nplace$
here is a pat and a tern and a rep\ntern\nlace$
here is a pat and a tern and a repl\nern\nace$
here is a pat and a tern and a repla\nrn\nce$
here is a pat and a tern and a replac\nn\ne$
here is a pat and a tern and a replace\n\n$
here is a pat and a tern and a replace
Если вы действительно ищете что-то вроде перевода, вы тоже можете это сделать. Я написал это ранее как ответ на другой вопрос:
Это выглядит выполнимым - вам просто нужно как бы сдвигать / сдвигать:
echo can ccccc ccccccccclayii sed глина игнорировать \ каждый cclayii вещь, кроме совпадающего слова \ - cclayiicclayii | sed -e'y / / \ n / '\ - eh -e's / \ (cclayii \) \ 1 * / & / g; x; s // / g; s / ^ / / '\ - ex -e's //./; s / \ ([^] * * \) \ {2 \} / \ 1 / g; s / ^ / / '\ -e'y / Clayk / kieio /; G; t $' -e: $ \ -e '/ ^ \ n / {s ///; y / \ n / \ n /;} '\ - et -e's / ^ * \ ([^] * \) \ (.* \ n [^] * \) / \ 2 \ 1 /; t $ '
может ccccc ccccccckieiii sed глина игнорировать все kkieiii, кроме совпадающего слова - kkieiiikkieiii
... это непросто.
Этот тоже немного зацикливается, но не так сильно.
Однако, как и в случае с наиболее сложными задачами, на способ проще использовать два
sed
s:echo can ccccc ccccccccclayii sed Clay ignore \ {{1 }} все cclayii, кроме совпадающего слова \ - cclayiicclayii | sed -e's / \ (cclayii \) \ 1 * / \ n & \ n / g; G; s / ^ / / '| sed -e' / ^ /!y/clayk/kieio/;/./{H;d;} '\ -e'x; s / \ n \ {0 , 1 \} // g '
может ccccc ccccccckkieiii sed глина игнорировать все kkieiii, кроме совпадающего слова - kkieiiikkieiii
С BSD sed
вы я захочу использовать буквальную новую строку вместо n
в экранировании \ n
в правой замене первого sed
там.
В BSD sed вы можете использовать:
sed "s/[[:<:]]clayii[[:>:]]/kieii/g" /path/to/file