.*
означает zero or more characters
, вы хотите 1 or more characters
, что в любом седе будет ..*
:
$ sed "s/..*/'&'/" file
'Quote1'
'Quote2'
'Quote3'
Вы также можете записать это регулярное выражение как .\+
в GNU sed, .\{1,\}
в SOS POSIX и .+
в GNU или OSX / BSD sed при вызове с -E
.
Выше предполагается, что строки всех пробелов должны быть заключены в кавычки. Если это не так, то:
$ sed "s/.*[^[:blank:]].*/'&'/" file
'Quote1'
'Quote2'
'Quote3'
В любом awk, предполагая, что строки всех пробелов должны быть заключены в кавычки:
$ awk '/./{$0="\047" $0 "\047"}1' file
'Quote1'
'Quote2'
'Quote3'
иначе:
$ awk 'NF{$0="\047" $0 "\047"}1' file
'Quote1'
'Quote2'
'Quote3'
Вы можете увидеть разницу между этими словами:
$ printf ' \n' | sed "s/..*/'&'/"
' '
$ printf ' \n' | sed "s/.*[^[:blank:]].*/'&'/"
$ printf ' \n' | awk '/./{$0="\047" $0 "\047"}1'
' '
$ printf ' \n' | awk 'NF{$0="\047" $0 "\047"}1'
$