从一行中提取一个字符串并将其放在前一行(Perl)中

时间:2015-01-09 09:55:52

标签: perl extract transfer

我在使用perl编程方面没有多少经验,但必须解决一个重大问题。我有这种格式的数据:

*IDENTIFIER A  
ABCDEFGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
*IDENTIFIER B  
ABCDEFGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
...  

我想从标识符下的行中删除前5个符号,并将这些符号添加到标识符行。每个标识符以*开头。新文件应如下所示:

*IDENTIFIER A:ABCDE  
FGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
*IDENTIFIER B:ABCDE  
FGHIJKLMNOPQRSTVUWXYZ  
3. line  
4. line  
...    

我会很高兴得到各种帮助。 THX

1 个答案:

答案 0 :(得分:2)

那不是那么难。

while (<>) {
    if (/^\*/) {                                     # Identifier
        chomp;                                       # Remove the \n.
        my $nextline = <>;                           # Read the next line.
        my $first_5 = substr $nextline, 0, 5, q();   # Move the 1st 5 characters to a variable.
        print "$_:$first_5\n$nextline";              # Print the identifier, the 5 chars,
                                                     #     newline, nextline.
    } else {
        print
    }
}