【问题标题】:replacing matching columns using sed/awk/使用 sed/awk/ 替换匹配的列
【发布时间】:2013-06-01 16:23:59
【问题描述】:

如何使用 awk/sed 或任何其他脚本命令来实现这一点。

1) 读取多行的文件,每行包含 26 位数字 2)如果找到07,则使用shell脚本仅在每行的第25和第26列将07替换为08

谢谢。

【问题讨论】:

  • 给定行中的列如何分隔,空格?

标签: shell sed awk


【解决方案1】:

awk

awk  'BEGIN{FS=""; OFS=""}{if ($25$26 == "07") {$25="0"; $26="8"}{print}}'

【讨论】:

  • 我不知道我可以指定 FS=""。谢谢。
【解决方案2】:

如果您确定文件中的每一行都有 26 位数字。 (长度 26),您可以:

sed 's/07$/08/' file

【讨论】:

  • 谢谢肯特。有没有通用的方法。假设我指定要替换的列和数字作为脚本的参数。
  • @irappa 是的,你可以试试sed -r 's/(.{24})07(.*)/\108\2/' 如果有这样的要求,我会用 sed 来做。
【解决方案3】:

这可能对你有用(GNU sed):

sed -r 's/^(.{24})07/\108/' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2014-11-02
    • 2017-01-31
    • 2013-05-30
    • 2020-04-27
    • 2022-01-15
    相关资源
    最近更新 更多