Я должен преобразовать ниже строки
TableName.Cust Name,
Name,
TableName.Name AS Name,
вывод должен быть похожим ниже
TableName.Cust "Name",
Name,
TableName.Name AS "Name",
Следовательно я использовал ниже команды
sed 's/[a-z][A-Z] Name,/ "Name",/gI'
но это дает ниже вывода
TableName.Cu "Name",
Name,
TableName.Name "Name",
проблемой является здесь слово "Св.", удален в первом операторе, и "AS" удален в 3 операторах. Вы могли дать надлежащую команду для замены этого.
это должно сделать
$ sed '/TableName/s/Name,$/"&"/' infile
Name,
TableName.Name AS "Name,"
$
, привязка для указания на конец строки, таким образом Name,$
соответствия 'Имя', в конце строки и заменяют его "Именем",
Существует много способов сделать это (например, с помощью групп получения) - возможно, самое простое должно заменить Name,
нечувствительно к регистру только на тех строках, где этому предшествует последовательность по крайней мере одного словесного символа и по крайней мере одного пробельного символа:
$ sed -E '/\w+\s+Name,/ s/Name,/"Name",/I' infile
TableName.Cust "Name",
Name,
TableName.Name AS "Name",
или использование основных регулярных выражений
$ sed '/[[:alnum:]_-]\{1,\}[[:blank:]]\{1,\}Name,/ s/Name,/"Name",/I' infile
TableName.Cust "Name",
Name,
TableName.Name AS "Name",