微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python或bash – 在行尾添加“在行首”

我有类似的文本文件

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] 举报,一经查实,本站将立刻删除。

相关推荐