使用perl更改文件中的特定字段

时间:2016-10-15 18:01:58

标签: bash perl file replace append

perl -i -lape 'BEGIN{ $" = "|"} $F[$COLUMN]=$VALUE if $F[0] eq "$ID";' $FILE

因此,我尝试在文件内部替换特定ID行中的字段以及具有给定COLUMN的特定VALUE。当我执行时,文件内部没有进行任何更改。用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

1 个答案:

答案 0 :(得分:0)

如果你编写一个程序而不是尝试单行程,这会很有帮助,这很难做到,特别是对初学者来说。

什么是$('td[class=label]').each((i, elem) => { //<------ $ is cheerio object let str = elem.innerHTML; console.log(str); //<---------- undefined if (str === '44 years') { console.log('found it'); let age = elem.nextSibling.nextSibling.innerHTML; console.log(age); return false; } }); ul > ul { display : inline-flex ; } $COLUMN

Perl将它们视为Perl变量,您尚未对其进行定义,因此它们都可以作为空字符串使用。

如果您打算使用shell中的环境变量,则需要$ID$VALUE$ENV{COLUMN}。 此外,您的$ENV{ID}选项会在您阅读每一行后打印$ENV{VALUE}的值。由于您无法更改,因此修改-p的代码没有明显效果

也许这更接近?

$_

我认为它的可读性更高。请注意,我使用了Env模块,这是将复制环境变量列表的快速方法转换为同名的Perl变量

@F