bash将行组移动到新文件

bash将行组移动到新文件,bash,Bash,在bash脚本中,我让phpcpd检查整个代码库并输出到文件。然后我想创建新文件,详细说明特定文件中有重复代码的地方 phpcpd的输出包含n组线,将这些线组分开是一个空行 我试图添加到bash脚本中,以复制与模式($FILENAME)匹配的所有行组,并将剩余数据放入新文件中 我不确定如何做到这一点,也没有代码示例 例如编辑 用于搜索模式的文件包含以下内容: /home/dir/fileName1 /home/dir/fileName2 /home/dir/fileName3 /home/di

在bash脚本中,我让phpcpd检查整个代码库并输出到文件。然后我想创建新文件,详细说明特定文件中有重复代码的地方

phpcpd的输出包含n组线,将这些线组分开是一个空行

我试图添加到bash脚本中,以复制与模式($FILENAME)匹配的所有行组,并将剩余数据放入新文件中

我不确定如何做到这一点,也没有代码示例

例如编辑

用于搜索模式的文件包含以下内容:

/home/dir/fileName1
/home/dir/fileName2
/home/dir/fileName3

/home/dir/fileName4
/home/dir/fileName5

/home/dir/fileName1
/home/dir/fileName6
然后假设我想搜索fileName1,一个名为fileName1Results的新文件应该包含以下内容:

/home/dir/fileName1
/home/dir/fileName2
/home/dir/fileName3

/home/dir/fileName1
/home/dir/fileName6

根据示例进行编辑:QuickPerl根据需要执行操作,将行分隔符设置为空行,读取FILENAME变量并写入${FILENAME}结果文件

$ cat infile
/home/dir/fileName1
/home/dir/fileName2
/home/dir/fileName3

/home/dir/fileName4
/home/dir/fileName5

/home/dir/fileName1
/home/dir/fileName6
$ FILENAME=fileName1
$ perl -se '$/ = "\n\n"; while (<>) { print $_ if /\Q$f\E/; }' -- -f="$FILENAME" > "${FILENAME}Results" <infile
$ cat "${FILENAME}Results"
/home/dir/fileName1
/home/dir/fileName2
/home/dir/fileName3

/home/dir/fileName1
/home/dir/fileName6
$cat infle
/home/dir/fileName1
/home/dir/fileName2
/home/dir/fileName3
/home/dir/fileName4
/home/dir/fileName5
/home/dir/fileName1
/home/dir/fileName6
$FILENAME=fileName1

$perl-se'$/=“\n\n”;虽然(){print$\uif/\Q$f\E/;}'--f=“$FILENAME”>“${FILENAME}Results”请发布一个具有代表性的示例输入以及生成的文件的命名方式。