Perl 使用Awk或SED查找行中的类似模式

Perl 使用Awk或SED查找行中的类似模式,perl,awk,sed,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:KSSS

需要帮忙吗 我有一个包含多行的文件,如下所示

'**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);
使用严格;
使用数据::转储程序;
我的$filename=$ARGV[0];
chomp($filename);
打开(文件,$filename);
我的($FSR);
while(my$data=){
#打印$数据;
($FSR)='';
如果($data=~/('FSR.*?(.*)(\')/){
$FSR=“$1,$2”;
}
打印“$FSR\n”;
}
关闭(文件);
请帮忙

谢谢 桑迪

编辑:

以下一行代码似乎可以解决您的问题,如下所述:

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

您还想了解更多信息吗?

我投票结束了这个问题,因为它似乎是一个对工具或解决方案的建议请求,而不是对您自己的代码的帮助请求。这使您的问题脱离StackOverflow的主题。如果该评估不正确,并且您确实需要帮助编写自己的代码,那么请,我将很高兴收回我的投票。好的,我已经编写了我的代码,它似乎以第一个结果结束,就是这样,因此这个问题,如果您仍然认为这个问题没有机会,请不要客气,谢谢#/usr/bin/perl使用严格;使用数据::转储程序;我的$filename=$ARGV[0];chomp($filename);打开(文件,$filename);我的($FSR);while(my$data=){#print$data;($FSR)='';if($data=~/('FSR.*?)(.*?(\')/){$FSR=“$1,$2”;}print“$FSR\n”;}close(文件);请编辑您的帖子,而不是以注释的形式发布代码现在您已经显示了代码,我更困惑了:您不是说您想添加管道符号吗。您的代码似乎试图添加逗号。无论哪种方式,我都很好,我尝试了使用逗号,不过,谢谢通知。如果您有新问题,请单击按钮询问。如果此问题有助于提供上下文,请包含指向此问题的链接。-这是对这篇文章中问题的回答。“我遗漏了什么?”这一问题是针对@Sandepkumar的,因为这样一个简单的答案似乎是他们所寻求的,这一事实可能意味着我不完全理解他们问题的范围——这是他们详细阐述的要求。这一点尚不清楚。您应该进行编辑以使答案更清楚,并解释代码的作用以及它修复问题的原因。如果你想让某人详细说明,请对他们的问题/答案进行评论。结果给出了整行内容,而不是上面确认的两个部分**FSR**+S:KSSSSS+20+14++20120401'|****FSR**+S:KSSSSS+44+1++20160218'你需要编辑你的问题,以明确“部分”的定义。是撇号吗?