Я создаю команду для замены всех экземпляров с ; f.
на , (frequent).
. Таким образом, я написал sed -i 's:;[:space:]f.:,[:space:](frequent).:g'
без каких-либо изменений, а затем написал sed -i 's:; f.:, (frequent).:g'
, чтобы найти только то, что он заменяет все экземпляры f
, которые были записаны после ;
, поэтому его обращение ; find
к , (frequent).ind
Любой, пожалуйста, дайте мне знать о моей вине и как исправить ее?
Проблема в первом случае заключается в кавычках: если вы хотите использовать :
в качестве разделителя, вы не можете использовать его без кавычек в символьных пространствах. Кроме того, .
имеет особое значение в регулярном выражении - оно соответствует любому символу. Чтобы соответствовать буквальной точке, используйте \.
. Кроме того, [:space:]
должно использоваться внутри класса символов, поэтому вы должны использовать [[:space:]]
. Наконец, классы символов не имеют значения в замещающей части выражения.
Это должно работать:
sed 's/;[[:space:]]f\./, (frequent)./g'