gpt4 book ai didi

Perl,从文本文件第 2 列中的每个值中减去 8

转载 作者:行者123 更新时间:2023-12-02 07:26:28 25 4
gpt4 key购买 nike

这适用于第一列。我怎么能把它改成只在第二个工作?我仍然可以在一行中完成它还是必须将其扩展为一个 .pl 文件?

列之间用逗号分隔", "

perl -pe 's/^([-0-9]+)/$1 - 8/e' your_file > output.txt

详细信息:

  • -p 逐行读取文件并打印
  • -e 运行 perl 代码,行内容在 $_ 中
  • s/.../.../e - 用表达式替换正则表达式
  • ...^([-0-9]+) - 匹配任何数字和/或 - 符号。还捕获匹配的片段。
  • $1 - 4.91 - 使用正则表达式捕获的值完成工作。

文件示例。

Title1, Title2, Title3, ..., Titlen

12456, 45, 21, 686731, ...

21, 6876546, 987, 134561, ...

最佳答案

当 perl 大师们正在思考答案时,这里是 awk 解决方案:

> echo '5 10 15\n20 25 30' | awk '{$2-=8; print}'
5 2 15
20 17 30

更新

假设您有一个文件 x.txt,其格式与您的示例文件相同:

> cat x.txt
t1, t2, t3
1, 12, 3
-4, 22, 13

使用此命令,您可以从第二列中的每个数字字段中减去 8:

> awk -F, 'BEGIN {OFS=","} {if ($2+0==$2) {$2-=8}; print}' x.txt > output.txt

> cat output.txt
t1, t2, t3
1,4, 3
-4,14, 13

此处 -F,BEGIN {OFS=","} 告诉 awk 使用逗号作为输入/输出字段分隔符。大括号中的下一个 block 将针对每个输入行进行评估。因此,对于每个输入行,我们测试第二个字段是否为数字 ($2+0==$2),如果是,则从中减去 8,并打印结果行。输入文件是 x.txt,输出将从标准输出重定向到文件 output.txt

关于Perl,从文本文件第 2 列中的每个值中减去 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com