如何添加“围绕每行bash

时间:2016-06-17 15:43:40

标签: bash

我有一个文件,每行都有一个单词,我想在单词前添加",在单词后添加",

示例:

Hello
Sleep
Try

我想要:

"Hello",
"Sleep",
"try",

希望有人能帮助我

7 个答案:

答案 0 :(得分:8)

sed 's/.*/"&",/' file

在替换的替换部分中,&将替换为与原始正则表达式匹配的任何内容。 .*匹配整行。

答案 1 :(得分:3)

假设你每行有一个单词,我会使用以下GNU sed命令:

sed -i 's/.*/"\0",/' <your_file>

<your_file>替换为文件路径的位置。

说明:

  • sed表示Stream EDitor;它专门用于过滤和转换文本流
  • -i它是就地选项:它意味着它会将其转换结果写入正在处理的文件中
  • s/search/replace/sed的搜索&amp; replace命令:它搜索一个写为正则表达式的模式,并用其他东西替换匹配的文本
  • .*是一个正则表达式,可以尽可能多地匹配。由于sed逐行工作,因此它将匹配整行
  • \0是对整个匹配字符串的反向引用
  • "\0",是整个匹配的字符串,用引号括起来,后跟一个逗号。
  • s/.*/"\0",/sed搜索和替换命令,它将匹配整行并将其用引号括起来,后跟逗号

答案 2 :(得分:2)

sed(Stream EDitor)是此操作的唯一选择:

sed -e 's/^/"/;s/$/",/' file

正则表达式有两部分,由;分隔:

  1. s/^/"/表示在每行的开头添加"
  2. s/$/",/表示在每行的末尾添加",
  3. 魔术是开始行(^)和行尾($)的锚点。 man page有更多详细信息。值得学习sed。

答案 3 :(得分:2)

已经回答here

使用 awk

awk '{ print "\""$0"\","}' inputfile

使用纯bash

while read FOO; do
   echo -e "\"$FOO\","
done < inputfile

其中inputfile是包含没有引号的行的文件。

如果您的文件有空行, awk 绝对是可行的方法:

awk 'NF { print "\""$0"\","}' inputfile

NF告诉awk仅当字段数大于零(行不为空)时才执行print命令。

答案 4 :(得分:1)

只是为了与众不同:perl

perl -lne 'print qq{"$_",}' file

答案 5 :(得分:0)

这是一个简单的一个班轮:

sed -i 's/^/"/;s/$/",/' file_name

答案 6 :(得分:0)

> echo $word
word
> echo "\""$word"\","
"word",

请参阅How to escape double quotes in bash?