Surround all lines in a text file with quotes ('something')

31,886

Solution 1

Use sed?

sed -e "s/\(.*\)/'\1'/"

Or, as commented below, if the directories might contain apostrophes (nightmare if they do) use this alternate

sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/"

Solution 2

Using sed:

sed -i "s/^.*$/'&'/g" filename

Solution 3

You can use sed(1) to insert single quotes at the beginning and end of each line in a file as so:

sed -i~ -e "s/^/'/;s/$/'/" the_file

Solution 4

very simple logic, you just need to echo the quotes in front and behind.

while read -r line
do
  echo "'$line'"
  # do something
done < "file"

Solution 5

I prefer awk (it's faster than bash and very easy to extend):

awk '{print "\'" $0 "\'"}'
Share:
31,886
user191960
Author by

user191960

Updated on September 07, 2021

Comments

  • user191960
    user191960 over 2 years

    I've got a list of directories that contain spaces.

    I need to surround them with ' ' to ensure that my batch scripts will work.

    How can one surround each new line with a ' and a ' (quotes).

    e.g.

    File1:

    /home/user/some type of file with spaces
    /home/user/another type of file with spaces
    

    To

    File2:

    '/home/user/some type of file with spaces'
    '/home/user/another type of file with spaces'