【问题标题】:Problem with the save changes in the same file with awk使用 awk 在同一文件中保存更改的问题
【发布时间】:2021-01-31 22:38:36
【问题描述】:

我尝试在 awk 中保存文件中的更改 我有类似的文件

Eq6_1.ndx
eq6_2.ndx
...
...
eq6_10.ndx

一切正常

for index in {1..10}
do
    awk 'f;/hbonds_Other-SOL/{f=1}' eq6_$index.ndx | tee eq7_$index.ndx 
done

但我想将更改保存在同一个文件中,所以我试试这个

for index in {1..10}
do
    awk 'f;/hbonds_Other-SOL/{f=1}'  "eq6_$index.ndx" > "$tmp" && mv "$tmp" "eq6_$index.ndx"  
done

但我知道没有这样的文件 最后我想试试这个

#!/bin/bash
name="eq6"
for index in {1..10}
do
    awk 'f;/hbonds_Other-SOL/{f=1}'  "${name}_$index.ndx" > "$tmp" && mv "$tmp" "{$name}_$index.ndx" 
done

但我知道没有这样的文件?我做错了什么我尝试了这个解决方案,但它不起作用how to write finding output to same file using awk command

【问题讨论】:

  • 正如我在 cmets 中提到的您之前的问题(例如 stackoverflow.com/questions/65970828/…),您不需要在循环中调用 awk。如果您有兴趣学习如何更有效地做您正在做的事情,那么请提出一个新问题。否则,我会假设您不感兴趣,并尽量记住,如果您发布其他问题,请不要继续提出建议。
  • shellcheck.net 会顺便告诉您当前的问题 - 在发布问题之前,请始终在您的 shell 脚本上运行 shellcheck
  • @EdMorton 我创建了一个关于stackoverflow.com/questions/65980443/… 的新问题我想学习新事物,为什么不呢?
  • 我看到你又删了。如果您决定取消删除它,请确保在其中包含您的 awk 版本(尝试awk --version),如果不是 gawk,请告诉我们您是否可以安装 gawk。

标签: awk


【解决方案1】:

tmp 是一个变量,在尝试使用$tmp 访问该文件之前,您必须将其实际设置为文件名:

tmp=$(mktemp) || exit 1
name='eq6'
for index in {1..10}
do
    awk 'f;/hbonds_Other-SOL/{f=1}'  "${name}_$index.ndx" > "$tmp" && mv "$tmp" "${name}_$index.ndx" 
done

你也有{$name}而不是${name},但我认为这是一个错字。

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2019-03-24
    • 1970-01-01
    • 2021-04-23
    • 2014-04-06
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多