我正在尝试将以下两个单行 perl 代码组合成一个 perl 脚本,该脚本在文件的一行上执行,然后再进入下一行。请注意,这不是我自己的原始代码,这里提供的非常周到:在不相关的数据条目之间添加空白行
1
perl -pae 'print $/ if (defined $x && $x ne $F[0]); $x = $F[0];' DF-data2pfa.csv >DF-data2pfb.txt
2
perl -pae 'print $/ if (defined $x && $x ne $F[3]); $x = $F[3];' DF-data2pfb.txt >DF-data2pfc.txt
该脚本完全符合我的要求(将F[0]
我的数据集中一行的字段与F[0]
前一行的字段进行比较,如果它们不同,则在这些条目之间添加一个空白行),但我意识到我需要它来查看F[0]
和F[3]
在一行上并将两者与上一行进行比较。令我尴尬的是,我尝试一个接一个地运行,并没有意识到每次脚本遇到前一个脚本添加的空行时都会添加一个额外的空行,这对于我正在尝试输入的程序来说是不可接受的数据到。
所以我尝试使用该Deparse
工具将两者都转换为脚本格式,而不是使用elsif
语句将第二个添加到第一个。这变得一团糟。另外我不确定如何pae
在脚本中实现命令行的功能。我不确定e
脚本中是否有必要,但似乎首先打印每一行,然后将其拆分为一个数组( with pa
)是整个代码的一个相当完整的组件,我不知道如何在这里实现。
这是我得到的:
while (defined($_ = <ARGV>)) {
our(@F) = split(' ', $_, 0);
$x = $F[0];
$y = $F[3];
if defined $x and $x ne $F[0];
elsif defined $y and $y ne $F[3];
print $/
}
continue {
die "-p destination: $!\n" unless print $_;
}
如果这里不需要,我也愿意不使用该deparse
模块。感谢您提供的任何帮助/解释!