我的linux盒子上有一个2GB的文本文件,我正试图导入我的数据库.
我遇到的问题是处理此rdf文件的脚本在一行上窒息:
mismatched tag at line 25462599, column 2, byte 1455502679: =^
我想替换用
.我不能在所有行上搜索/替换,但我确实有行号,所以我希望有一些简单的方法来用新文本替换那一行.
有什么想法/建议吗?
sed -i yourfile.xml -e '25462599s!!!'
sed -i '25462599 s|||' nameoffile.txt
调用Unix中编辑文本文件的工具ed
(相反sed
,顾名思义就是流编辑器).
ed
曾经被用作交互式编辑器,但它也可以轻松编写脚本.方法ed
是,所有命令都采用地址参数.解决特定行的方法只是行号,更改寻址行的方法是s
命令,它采用相同的正则表达式sed
.所以,要改变第42行,你会写出类似的东西42s/old/new/
.
这是整个命令:
FILENAME=/path/to/whereever LINENUMBER=25462599 ed -- "${FILENAME}" <<-HERE ${LINENUMBER}s!!! w q HERE
这样做的优点ed
是标准化,而-i
标志sed
是一个专有的GNU扩展,在许多系统上都不可用.