使用Awk或SED连续获得相似的模式

时间:2018-02-27 15:37:03

标签: perl awk sed

需要一些帮助 我的文件有多行,如下所示

'**FSR**+S:KSSSSS+20+14++20120401'FST+S:KSSSSS+2'**FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401'FST+S:KSSSSS+2'**FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401'FST+S:KSSSSS+2'**FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401'

我正在努力获得以 FSR 开头的行中的所有细分 所以结果应该是这样的,每次找到FSR时添加管道,因为它们在行中出现的位置是恒定的。所以我不能在这里使用cut,总之FSR可能会出现在行的开头,中间或末尾

'**FSR**+S:KSSSSS+20+14++20120401' | **FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401' | **FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401' | **FSR**+S:KSSSSS+44+1++20160218'
'**FSR**+S:KSSSSS+20+14++20120401' 

另外,这是我用perl编写的代码,想是否可以用简单的方式完成

#!的/ usr / bin中/ perl的

use strict;
use Data::Dumper;

my $filename = $ARGV[0];
chomp($filename);

open(FILE,$filename);
my ($FSR);

while(my $data = <FILE>) {
        #print $data;
        ($FSR) = "";
        if($data =~ /('FSR.*?)(.*?)(\')/) {
                $FSR = "$1,$2";
        }
print "$FSR\n";
}
 close(FILE);

请帮忙

由于 沙

1 个答案:

答案 0 :(得分:0)

编辑:

以下单行似乎可以解决您所描述的问题:

$ sed -i -e 's/FSR/ | FSR/g' YOURFILE

还有更多内容或者您正在寻找的内容吗?