在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
答案 0 :(得分:1)
根据示例编辑:快速perl执行您想要的操作,将行分隔符设置为空行,读取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
编辑:调整以处理特殊字符(如果你的文件名中有这些字符)。