first line line nr 2 line three
等等
而我想生成
"first line","line nr 2","line three",
我不知道如何做到这一点在python或bash如果更容易/更快。 我知道有不同的代码打开文件和不同的阅读只有一行python(?),但我不知道在这种情况下使用哪个选项,更重要的是,如何添加这些字符。 任何build议将有所帮助。
理解脚本和程序之间的区别
Python GUI来执行Bash / ksh环境和shell应用程序?
使用bash在文件中查找string
在一个terminal启动多个工具,如grunt和http-server
没有findbash脚本命令 – 命令正确执行
md5 / sha1散列大文件
如何将ISO8859-15转换为UTF8?
Bash – :没有这样的文件或目录
新贵停止运行
将stderrredirect到logging器,然后redirect到文件
一些简单的方法来做到这一点…
一个简单的perl线程:
perl -pi -e 's/^(.*)$/"$1",/g' /path/to/your/file
解释一下,正则表达式^(.*)$抓取行( ^ )和行尾( $ )之间的所有内容( (.*) ),然后使用$1匹配组变量重新构造它与引号和逗号。
sed 's/.*/"&",/'
为了参考,如果有人想用python做同样的事情。 有一个方便的模块fileinput可以像这样使用:
import fileinput import sys,os for line in fileinput.input(inplace=True): sys.stdout.write('"%s",%s' % (line.rstrip(os.linesep),os.linesep))
然后运行这个脚本:
python myscript.py file1 file2 file3
这将改变你的文件。
成为一个真正的unix怪胎:使用sed!
sed 's/^/"/; s/$/",/;' < your_text_file
如果你想用反斜杠转义现有的双引号,使用's/"/\"/g; s/^/"/; s/$/",/;' 's/"/\"/g; s/^/"/; s/$/",/;' 作为模式。
sed非常适合这种类型的任务。 查看一个可笑的例子列表 。
没有必要为此任务构建正则表达式(带反向引用)。 这是一个昂贵的操作,因为你不会改变行中的东西。 最简单的方法就是打印出来。
awk '{print " 42"$0" 42,"}' file
$ head -5 file this is line this is line this is line this is line this is line $ wc -l < file 9545088 $ time awk '{print " 42"$0" 42,"}' file >/dev/null real 0m15.574s user 0m15.327s sys 0m0.172s $ time sed 's/.*/"&",/' file > /dev/null real 0m31.717s user 0m31.465s sys 0m0.157s $ time perl -p -e 's/^(.*)$/"$1",/g' file >/dev/null real 0m36.576s user 0m36.006s sys 0m0.360s
在Bash:
while read line do echo ""${line}"," done < inputfile
蟒蛇
for line in open("file"): line=line.strip() print '"%s",' % line
sh + awk在这里也不错…
!/bin/sh for FILE in "$@" do awk '{print "" $0 "","}' < $FILE > $FILE.tmp mv $FILE.tmp $FILE done
在vi中:
:%s/^(.*)$/"1",/g
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。