插入标题行后出现文本文件中的空行

时间:2016-06-23 20:45:09

标签: perl

我想在每个.tsv文件中插入自定义标头,解析每个文件的内容并附加到最​​终的变体文件。我试图在一个循环中实现这一点,但它不起作用,所以我尝试了两个单独的循环。第一个循环将标头插入每个.tsv文件中,但是,第二个循环用空行替换插入的标头。有人可以解释为什么会发生这种情况以及如何解决这个问题?感谢

FATAL EXCEPTION: main
Process: com.lumberjackapps.dailyhero, PID: 2395
java.lang.Error: ErrorCopyingDataBase
    at com.lumberjackapps.dailyhero.DataBaseHelper.createDataBase(DataBaseHelper.java:57)
    at com.lumberjackapps.dailyhero.TestAdapter.createDatabase(TestAdapter.java:34)
    at com.lumberjackapps.dailyhero.CharacterInfo$1.onClick(CharacterInfo.java:46)
    at android.view.View.performClick(View.java:5198)
    at android.view.View$PerformClick.run(View.java:21147)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
E/EGL_emulation: tid 955: eglCreateSyncKHR(1294): error 0x3004 (EGL_BAD_ATTRIBUTE)
E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xa15d3f80
E/audio_hw_generic: Error opening input stream format 1, channel_mask 0010, sample_rate 16000

2 个答案:

答案 0 :(得分:1)

试试这个:

use strict;
use warnings;
use Tie::File;

my $tsv_file = 'test.txt';

tie my @textFile, 'Tie::File', $tsv_file, recsep => "\n"  or die $!;
for my $line (@textFile) {
    $line = "New Sample\n" if($line =~ /FORMAT\.1\.FSRF/);
}
untie @textFile;

答案 1 :(得分:0)

在Perl中,您可以用BBB替换AAA

$string =~ s/AAA/BBB/;

所以如果你想:

#replace lines containing "FORMAT.1.FSRF" with "New Sample"

然后尝试:

$string =~ s/FORMAT\.1\.FSRF/New Sample/g;

如果您只想为每一行进行一次替换,请删除最后一个g