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
答案 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