输入.txt
A(0,1,2)
...
B(A,3)
...
C(B,4,5)
如果一个函数的第一个参数不等于0但对应于一个函数名,我想用所有相应函数的参数替换它(例如用所有参数替换上面函数B中的第一个参数'A'功能 A)。也就是期待
输出.txt
A(0,1,2)
...
B(0,1,2,3)
...
C(0,1,2,3,4,5)
我们如何使用 awk/sed 或 python 做到这一点?
编辑:
我的一个想法是将函数名称存储为变量,并将其参数存储为 bash 中的值。在 python 中,我们可能会使用 dict,将函数名视为键,将其参数视为值。实现起来并不容易。
最佳答案
哇
awk -F'[()]' '
$2 !~ /^0,/ {
split($2, a, /,/)
sub(/^[^,]+/, val[a[1]], $2)
}
{
val[$1] = $2
print $1 "(" $2 ")"
}
' input.txt > output.txt
其中sub(/^[^,]+/, val[a[1]], $2)
用于匹配$2
中的第一个参数并替换它具有 val[a[1]]
的值,该值由前面几行的 val[$1] = $2
的执行定义。
关于python - 如何在 awk/sed/python 中用另一行替换一行的一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769145/