【问题标题】:find a string and add string找到一个字符串并添加字符串
【发布时间】:2023-04-06 04:33:01
【问题描述】:

我有多个文件...看起来像:

ATOM   1244  O   VAL   160       7.381  11.465  -2.646   1.000  60.790   0.000
ATOM   1245  CB  VAL   160       5.766  13.870  -0.914   1.000  57.640   0.000
ATOM   1246  CG1 VAL   160       7.232  14.074  -0.568   1.000  57.530   0.000
ATOM   1247  CG2 VAL   160       5.065  15.213  -1.089   1.000  58.420   0.000
ATOM   1248  N   VAL     1     -14.324 -25.299   8.568   1.000  77.840   0.000
ATOM   1249  CA  VAL     1     -14.315 -23.826   8.346   1.000  78.450   0.000
ATOM   1250  C   VAL     1     -15.181 -23.169   9.426   1.000  76.690   0.000

现在我必须在行后添加“TER”:

ATOM   1247  CG2 VAL   160       5.065  15.213  -1.089   1.000  58.420   0.000

这一行在所有文件中都是相同的。所以就像我应该在所有文件中找到这一行,然后在这一行之后添加“TER”..

我认为可以通过 grep 或 sed 搜索行。但是如何在下一行添加字符串?我根本不清楚这段代码......有人会帮助吗......

【问题讨论】:

  • 使用哪种编程语言?
  • 行后 (ATOM 1247 CG2 VAL 160 5.065 15.213 -1.089 1.000 58.420 0.000) 下一行应该有“TER”。生物学中的“TER”表示此处文件的终止。 .

标签: linux string add


【解决方案1】:

尝试在 shell 上运行它:

/usr/bin/perl -p -i -e "s/(ATOM\s+1247\s+CG2\s+VAL\s+160\s+5.065\s+15.213\s+-1.089\s+1.000\s+58.420\s+0.000)/\$1\nTER/g" my.allfiles

"-p" 导致 Perl 假设您的程序周围有以下循环,这使得它迭代文件名参数有点像 sed:

  1. 线路:
  2. 而 () {
  3. ... # 你的程序放在这里
  4. }继续{
  5. 打印或死亡“-p 目的地:$!\n”;
  6. }

如果某个由参数命名的文件由于某种原因无法打开,Perl 会发出警告,然后转到下一个文件。请注意,这些行是自动打印的。打印期间发生的错误被视为致命错误。要禁止打印,请使用 -n 开关。 A -p 覆盖 -n 开关。

http://perldoc.perl.org/perlrun.html

【讨论】:

  • 这不会添加“TER”...它在文件中没有结果执行
  • 我已经更新了上面的代码。我刚才也测试了它,它对我有用。确保您提供了正确的文件名。
  • 我很高兴它对你有用。请将我的答案标记为已接受,以便将来帮助其他用户。谢谢。
【解决方案2】:

Sed、awk 或 perl 是这里使用的工具。

sed 有一个简短的手册页。阅读它,您将学习各种技巧。

在那里寻找模式匹配,然后我认为有一个命令可以将文本添加到行尾。

【讨论】:

    【解决方案3】:
    find root-path-to-search -type f -execdir sed -r \ 
    's/^(\s*ATOM\s+1247\s+CG2\s+VAL\s+160\s+5\.065\s+15\.213\s+-1\.089\s+1\.000\s+58\.420\s+0\.000\s*)$/\1\nTER\n/' {} \+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多