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

gv8xihay  于 2023-04-29  发布在  Linux
关注(0)|答案(7)|浏览(192)

我有一个包含空格的目录列表。
我需要用' '包围它们以确保我的批处理脚本可以工作。
怎么能用一个'和一个'(引号)把每一行都围起来呢?
例如
文件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'
jhiyze9q

jhiyze9q1#

使用sed?

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

或者,如下面的注解所示,如果目录可能包含撇号(如果包含的话,那就糟了),请使用以下替代方法

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

a7qyws3x2#

使用sed:

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

bvhaajcl3#

您可以使用sed(1)在文件中每行的开头和结尾插入单引号,如下所示:

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

woobm2wo4#

我更喜欢awk(它比bash更快,而且很容易扩展):

awk '{print "\'" $0 "\'"}'
l7wslrjt

l7wslrjt5#

非常简单的逻辑,你只需要在前面和后面呼应引号。

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

smtd7mpg6#

使用sd,使用'包围命令如下所示:

sd '(.*)' \''$1'\'

要使用"包围,命令如下所示:

sd '(.*)' '"$1"'

希望你明白了。

pgpifvop

pgpifvop7#

使用xargsprintf

< file xargs printf "'%s'\n" |
  sponge file # optionally sponge back to modify the file

相关问题