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'
È stato utile?

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
scroll top