У меня есть текстовый файл с ./.
и должен заменить его 0|0
.
Файл является слишком большим, чтобы открыться в Gedit и сделать это вручную.
Я могу сделать это использование sed
?
Да. В этом случае полезно выбрать другой разделитель как _
, этим путем Вы не должны выходить из наклонной черты:
sed 's_\./\._0|0_'
Пример:
$ cat test
./.
$ sed 's_\./\._0|0_' test
0|0
Добавить
-i
изменить файл на месте, а не распечатать вывод к stdout,-i.b
сделать так и сохранить резервное копирование с .b
как расширение иg
в конец выражения для изменения нескольких происшествий на строку, а не просто первого (→ 's_\./\._0|0_g'
).s/A/B/
– замена A
B
, то же как s_A_B_
, ssAsBs
или независимо от того, что можно вообразить:
Любой символ кроме обратной косой черты или новой строки может использоваться вместо наклонной черты для разграничивания BRE и замены. [источник]
s/A/B/g
– замена A
B
и сделайте это g
lobally, не прекращайте делать его после первого открытия (на строку!)
\./\.
– литеральная строка ./.
, точки нужно оставить с обратной косой чертой, потому что они - часть основных регулярных выражений и еще взяли бы любой символ, соответствуя a/a
, a/b
, ///
и так далее0|0
– литеральная строка 0|0
Да, можно сделать это с sed.
Необходимо выйти .
и /
с a \
.
sed -i.bak 's/\.\/\./0|0/g' file
-i.bak
заставит sed отредактировать файл на месте, но создает файл резервной копии с .bak расширением.
g
в "глобальных" средствах конца-> Замены весь occurencies.
Даже при том, что Вы попросили sed
команда для выполнения требования можно также дать попытку ex
команда.
ex -sc '%s/\.\/\./0|0/g|x' file
%
выберите все строки
s
для замены
g
замените все экземпляры глобально
x
запишите, выходят ли внесенные изменения и
Пример:-
$cp file file.bak
$cat file
./.
$ex -sc '%s/\.\/\./0|0/g|x' file
$cat file
0|0