isso deve ser feito
$ sed '/TableName/s/Name,$/"&"/' infile
Name,
TableName.Name AS "Name,"
$
é uma âncora para apontar o fim de linha, então Name,$
corresponde a "Nome", no final da linha e substitui por "Nome",
Eu preciso converter a string abaixo
TableName.Cust Name,
Name,
TableName.Name AS Name,
a saída deve ser como abaixo
TableName.Cust "Name",
Name,
TableName.Name AS "Name",
Daí eu usei o comando abaixo
sed 's/[a-z][A-Z] Name,/ "Name",/gI'
mas está dando saída abaixo
TableName.Cu "Name",
Name,
TableName.Name "Name",
problema é aqui a palavra "st" é removida na primeira instrução e "AS" é removido na declaração 3. você poderia, por favor, dar o comando adequado para substituir isso?
isso deve ser feito
$ sed '/TableName/s/Name,$/"&"/' infile
Name,
TableName.Name AS "Name,"
$
é uma âncora para apontar o fim de linha, então Name,$
corresponde a "Nome", no final da linha e substitui por "Nome",
Existem muitas maneiras de fazer isso (por exemplo, usando grupos de captura) - possivelmente o mais simples é substituir Name,
sem distinção entre maiúsculas e minúsculas somente nas linhas em que é precedido por uma sequência de pelo menos um caractere de palavra e pelo menos um caractere de espaço em branco:
$ sed -E '/\w+\s+Name,/ s/Name,/"Name",/I' infile
TableName.Cust "Name",
Name,
TableName.Name AS "Name",
ou usando expressões regulares básicas
$ sed '/[[:alnum:]_-]\{1,\}[[:blank:]]\{1,\}Name,/ s/Name,/"Name",/I' infile
TableName.Cust "Name",
Name,
TableName.Name AS "Name",