sed 's/||/ || /g' filename
полностью отличается от
sed -rf sedFile filename
Последнее, по сути,
sed -r 's/||/ || /g' filename
, и это приведет к совершенно другим результатам, поскольку -r
изменит значение |
от буквально вертикальной черты до чередования. Таким образом, ||
в шаблоне поиска соответствует строке нулевой длины, или строке нулевой длины, или строке нулевой длины, что означает, что она будет соответствовать любой позиции (нулевой длины) между символами (в том числе до первого символа и после последний символ).
echo ,,,, | sed -r 's/||/_||_/g' # underscores for visibility in the output
имеет следующий вывод
_||_,_||_,_||_,_||_,_||_
Кстати, s/|/ || /g
будет иметь такой же эффект, тогда как s// || /g
недействителен.