Linux 用引号(';something';)将文本文件中的所有行括起来

Linux 用引号(';something';)将文本文件中的所有行括起来,linux,unix,text,directory,grep,Linux,Unix,Text,Directory,Grep,我有一个包含空格的目录列表 我需要用“”包围它们,以确保我的批处理脚本能够工作 如何用一个“和一个”(引号)围绕每一行 e、 g 文件1: /home/user/some type of file with spaces /home/user/another type of file with spaces 到 文件2: '/home/user/some type of file with spaces' '/home/user/another type of file with spaces

我有一个包含空格的目录列表

我需要用“”包围它们,以确保我的批处理脚本能够工作

如何用一个“和一个”(引号)围绕每一行

e、 g

文件1:

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

文件2:

'/home/user/some type of file with spaces'
'/home/user/another type of file with spaces'
使用sed:

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

sed -e "s/\(.*\)/'\1'/"
或者,如下文所述,如果目录可能包含撇号(如果包含撇号,则为梦魇),则使用此替代项

sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/"
可以使用在文件中每行的开头和结尾插入单引号,如下所示:

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

非常简单的逻辑,你只需要回应前面和后面的引用

while read -r line
do
  echo "'$line'"
  # do something
done < "file"
读取时-r行
做
回显“$line”
#做点什么
完成<“文件”
我更喜欢awk(它比bash快,而且很容易扩展):


您需要在字符串中引用撇号吗?不,仅在字符串周围引用。你知道-所以我的脚本在遇到带有空格的路径时不会失败。命令工作得很好-显然,如果有人在文件上使用此命令,则会将其附加到命令末尾。如果文件名包含撇号怎么办?在我的场景中,我会将其修改为sed-e“s/'/'\\'\\'/g;s/(.*)/'\1'/,我想要双引号和逗号分隔的sed-e“s/(.*)/\”\1\”,/“谢谢你的回答,但是宠物皮。。。“-e”是多余的,因为只有一个脚本存在。对我来说不起作用亚当-根据特定的文件名会出现各种错误-可能需要-e在那里?我很确定我在cygwin中准确地弹出了它,它做得很好。但是,本可以做成一种类型。为什么所有的回答者和先前的选民都执意使用sed?这个问题没有要求它。这行吗?我不熟悉Bash控制流。@AaronHall因为sed是一个很好的文本转换程序,而这个问题并不是专门针对Bash提出的
awk '{print "\'" $0 "\'"}'