Ваша проблема в том, что cal уже выделяет текущий день, а управляющие коды отбрасывают смещения
Посмотрите на /tmp/terminal в шестнадцатеричном редакторе. Сегодня (11): 5F 08 31 5F 08 31, а не 31 31
Используйте cal -h для отключения автоматического выделения текущей даты.
Если вы используете .*.domain1.com в качестве своего шаблона, вы будете эссенциально соответствовать нежелательным символам, потому что . означает любой символ. Вы хотите заменить только «словарные символы» (буквы ASCII, цифры или знак подчеркивания), используя \w+.
Поскольку нормальное sed regex не знает о +, обязательно добавьте для sed использовать расширенное регулярное выражение.
Также убедитесь, что вы используете кавычки! В противном случае * может быть интерпретирован bash. И вам следует избегать . в шаблоне, иначе он также будет соответствовать любому символу.
sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file
Если вы используете .*.domain1.com в качестве своего шаблона, вы будете эссенциально соответствовать нежелательным символам, потому что . означает любой символ. Вы хотите заменить только «словарные символы» (буквы ASCII, цифры или знак подчеркивания), используя \w+.
Поскольку нормальное sed regex не знает о +, обязательно добавьте -r для sed использовать расширенное регулярное выражение.
Также убедитесь, что вы используете кавычки! В противном случае * может быть интерпретирован bash. [D2] И вам следует избегать . в шаблоне, иначе он также будет соответствовать любому символу.
sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file
Если вы используете .*.domain1.com в качестве своего шаблона, вы будете эссенциально соответствовать нежелательным символам, потому что . означает любой символ. Вы хотите заменить только «словарные символы» (буквы ASCII, цифры или знак подчеркивания), используя \w+.
Поскольку нормальное sed regex не знает о +, обязательно добавьте -r для sed использовать расширенное регулярное выражение.
Также убедитесь, что вы используете кавычки! В противном случае * может быть интерпретирован bash. [D2] И вам следует избегать . в шаблоне, иначе он также будет соответствовать любому символу.
sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file
Используйте sed -i 's/domain1/domain2/' infile.
Если вы хотите заменить *.domain1.com, то измените:
sed 's/.*domain1/domain2/' infile
Убедитесь, что при первой попытке не использовать -i, который заменит место в вашем файле.
Используйте sed -i 's/domain1/domain2/' infile.
Если вы хотите заменить *.domain1.com, то измените:
sed 's/.*domain1/domain2/' infile
Убедитесь, что при первой попытке не использовать -i, который заменит место в вашем файле.
Используйте sed -i 's/domain1/domain2/' infile.
Если вы хотите заменить *.domain1.com, то измените:
sed 's/.*domain1/domain2/' infile
Убедитесь, что при первой попытке не использовать -i, который заменит место в вашем файле.