【发布时间】:2018-06-04 21:22:18
【问题描述】:
我正在编写一个简单的 Perl 脚本,用于输出外部文本文件的第二列(第一列和第二列用逗号分隔)。
我使用 AWK 是因为我熟悉它。
这是我的脚本:
use v5.10;
use File::Copy;
use POSIX;
$s = `awk -F ',' '\$1==500 {print \$2}' STD`;
say $s;
本地文件“STD”的内容是:
CIR,BS
60,90
70,100
80,120
90,130
100,175
150,120
200,260
300,500
400,600
500,850
600,900
我的输出很奇怪,它打印出所需的“850”,但它也打印了行尾和新行!
ka@man01:$ ./test.pl
850
ka@man01:$
问题不只是打印。我需要使用由 awk 生成的变量“即 $s 变量),但该变量也被保留了一个长字符串和一个新行!
你们能帮忙吗?
谢谢。
【问题讨论】:
-
你为什么要将
awk内联到 perl 中? -
@RavinderSingh13 当我用 "chomp $s"
Can't modify scalar chomp in scalar assignment at ./test.pl line 7, near "awk -F ',' '\$1==500 {print \$2}' STD@987654326 声明 $s 时,它抛出了一条错误消息@ -
@Sobrique 我不是 Perl 专家,所以我不知道 Perl 是否有内置函数可以打开远程文件,搜索它,找到一个字符串,然后编写它变成一个变量。
-
您将文本文件
STD描述为外部文件、本地文件和远程文件我>。你说所有这些是什么意思?当然,它们不能同时全部为真吗?为什么不只是一个文件? -
“这个变量也被一个长字符串保留”?