Circonda tutte le linee in un file di testo tra virgolette ('qualcosa')
Domanda
Ho un elenco di directory che contengono spazi.
Devo circondarli con '' per assicurarmi che i miei script batch funzionino.
Come si può circondare ogni nuova riga con un 'e un' (virgolette).
per es.
File1:
/home/user/some type of file with spaces
/home/user/another type of file with spaces
Per
File2:
'/home/user/some type of file with spaces'
'/home/user/another type of file with spaces'
Soluzione
Usa sed?
sed -e "s/\(.*\)/'\1'/"
O, come commentato di seguito, se le directory potrebbero contenere apostrofi (incubo se lo fanno) usare questo alternativo
sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/"
Altri suggerimenti
Uso di sed:
sed -i "s/^.*$/'&'/g" filename
Puoi usare sed (1) per inserire virgolette singole all'inizio e fine di ogni riga in un file in questo modo:
sed -i~ -e "s/^/'/;s/$/'/" the_file
logica molto semplice, devi solo fare eco alle virgolette davanti e dietro.
while read -r line
do
echo "'$line'"
# do something
done < "file"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow