РЕДАКТИРОВАТЬ: В соответствии с комментарием @anubhava сэра в случае, если последнее поле имеет значение "
, чтобы позаботиться об этом крайнем случае, можно попробовать:
awk -v s1="\"" '
{
spaces=""
match($0,/^ +/);
spaces=substr($0,RSTART,RLENGTH)
$NF=$NF!~/[a-zA-Z]/?s1 $NF s1:$NF
gsub(/^\"+|\"+$/,"\"")
$0=spaces $0
}
1
' Input_file
Не могли бы вы попробовать следующее, это также позаботится о разнесении в строках.
awk -v s1="\"" '{val="";val=$NF!~/[a-zA-Z]/?s1 $NF s1:$NF;sub($NF"$",val)} 1' Input_file
ИЛИ добавление здесь формы решения не на один лайнер.
awk -v s1="\"" '
{
val=""
val=$NF!~/[a-zA-Z]/?s1 $NF s1:$NF
sub($NF"$",val)
}
1
' Input_file
Объяснение: Добавление подробного объяснения выше.
awk -v s1="\"" ' ##Starting awk program from here and setting variable s1 as " value here.
{
val="" ##Nullifying value of val here.
val=$NF!~/[a-zA-Z]/?s1 $NF s1:$NF ##Checking if last field is having alphabets then keep it as it is OR add " to before and after its value.
sub($NF"$",val) ##Substituting last column value with variable val value here.
}
1 ##1 will print edited/non-edited lines here.
' Input_file ##Mentioning Input_file name here.