我正在使用1.2GB的文本文件。结束模式需要更新 'anytext},\ n]'到'anytext}]',其中\ n是旧模式中的回车符。
以下sed命令不会更新模式
sed -i -e 's/},\n]$/}]/' foo.txt
sed -i -e 's/\}\,\n\]$\/}\]/' foo.txt
知道如何更新模式吗? 我愿意使用其他bash命令,只要它适用于大文本文件。
提前谢谢。
答案 0 :(得分:0)
$ cat file
anytext},
]
$ awk 'NR>1{ if (/^]/) sub("},\n","}",prev); printf "%s",prev } {prev=$0"\n"} END{ printf "%s",prev }' file
anytext}]
如果这样做不符合您的要求,请编辑您的问题以提供一些有代表性的样本输入和预期输出。
答案 1 :(得分:0)
使用sed:
sed -i "s/\('anytext}\)\(\,[\]n\]'\)/\1]\',/g" test.txt
我在这里使用分组。分组完成\( HERE \)。第一组将保留不必修改的文本'anytext}
第二组只删除不必要的文本。然后我们可以通过在seds替换字段内部引用它来引用第一组,并添加我们需要的文本]',
然后我们达到了预期的效果:
'anytext}]',
文件:
[anthony@localhost ~]$ cat test.txt
'anytext},\n]'
答案 2 :(得分:0)
你快到了。你需要逃脱\ n。以下作品
$ echo 'anytext},\n]' | sed -r -e 's/},\\n]$/}]/' anytext}] $