我有一个文件,每行都有一个单词,我想在单词前添加"
,在单词后添加",
。
示例:
Hello
Sleep
Try
我想要:
"Hello",
"Sleep",
"try",
希望有人能帮助我
答案 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
正则表达式有两部分,由;
分隔:
s/^/"/
表示在每行的开头添加"
。s/$/",/
表示在每行的末尾添加",
。魔术是开始行(^
)和行尾($
)的锚点。 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",