【发布时间】:2017-02-25 00:33:51
【问题描述】:
perl -i -lape 'BEGIN{ $" = "|"} $F[$COLUMN]=$VALUE if $F[0] eq "$ID";' $FILE
所以我尝试用特定的ID 替换文件内部存在的字段,并用给定的VALUE 替换特定的COLUMN。当我执行时,文件内没有进行任何更改。我用 perl 来做这件事很重要(所以没有 awk 或 sed 解决方案)。我对 perl 的经验很少,因此非常感谢详细说明。
933|text1|text2|text3
934|colm1|colm2|colm3
935|line1|line2|line3
说 value=newValue column=2 和 id=934 所以文件应该是这样的
933|text1|text2|text3
934|colm1|newValue|colm3
935|line1|line2|line3
【问题讨论】:
-
目前还不清楚(至少对我来说)你想用什么替换什么。您能否显示几行输入以及该特定输入所需的输出?
-
如果您编写程序而不是尝试单行程序会有所帮助,这可能很难做到正确,尤其是对于初学者而言。
$ID和$VALUE是什么? Perl 将它们视为您尚未定义的 Perl 变量,因此它们都作为空字符串工作。如果您打算使用 shell 中的环境变量,那么您需要$ENV{ID}和$ENV{VALUE}。
标签: bash perl file replace append