2016-03-16 35 views
-2

在bash腳本中,我有phpcpd檢查整個代碼庫並輸出到一個文件。然後我想創建新的文件,詳細說明特定文件重複代碼的位置。bash將組的行移動到一個新文件

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 
+1

請發佈一個有代表性的示例輸入以及如何命名生成的文件。 – karakfa

回答

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 

編輯:調整處理特殊字符(如果你有他們在你的文件名)。

+0

很好,謝謝! – Joeseppe

相關問題