我收到了一个关于如何从bash中的文本文档中的行更新特定列值的问题。 到目前为止,我这样做: 在这种情况下,我试图从一个特定的帐户号码更新行中的第4列。取当前值,与用户插入的新值相加,然后用结果替换当前值。从bash中的文本文档中替换/更新列值
用两个变量$ 1打开脚本,保留我要查找的帐户,而$ 2是文件名。
文本文件有这样的信息:
11101 : CAJA GENERAL : 111 : 0
11102 : CAJA CHICA : 111 : 0
112 : BANCOS : 11 : 0
11201 : CUENTAS CORRIENTES : 112 : 0
1120101 : Banco Agrícola S.A. : 11201 : 20
1120102 : Banco Hipotecario S.A. : 11201 : 0
11202 : CUENTAS DE AHORRO : 112 : 0
1120201 : Banco Agrícola S.A. : 11202 : 0
我使用此代码来找到正确的行和分配电流值到变量“行为”,并与其他新的价值
read -p "Inserte monto" insert
act=$(grep -w "^$1" $2 | cut -d":" -f4)
vare=$(($act + $insert))
总IT
但是,然后我需要把这个新的值,以确切的列/行我拿了原来的价值。
我该如何做到这一点?我从一天的旅行中精疲力尽,现在我想完成这个并且去睡觉。任何人都可以给我一个想法或解决方案?我非常感谢现在的任何帮助。
编辑: 好..我去,并尝试AWK。 发现这“替换为”文本
awk -F':' -vOFS=' ' '{ $4 = "$vare"}1'
到目前为止......一旦我进入这一行的脚本执行停止..或者我不知道是什么,但它不会继续下去了,也没有显示任何错误。 我做错了什么?编辑2: 预期输入。 成功更新后,我希望所选帐户在我的目录中的现有文档中具有更新后的值,到目前为止,解决方案允许我在终端中查看更新,但是原始文档是我需要查看更改的那个文档。感谢埃德莫顿的小费
我建议看看'awk'。 – Cyrus
我认为你应该提供一个文件到你的awk行......它没有定义什么“awk” –
[编辑]你的问题包括给定的输入的预期输出。 –