我有以下的,它忽略了只用#而不是那些線條與\ N(空/只含換行線)AWK發現,如果行是換行或#
你知道的一種方法,我可以打兩隻一石二鳥? I.E.如果行不包含多於1個字符,則刪除該行。
function check_duplicates {
awk '
FNR==1{files[FILENAME]}
{if((FILENAME, $0) in a) dupsInFile[FILENAME]
else
{a[FILENAME, $0]
dups[$0] = $0 in dups ? (dups[$0] RS FILENAME) : FILENAME
count[$0]++}}
{if ($0 ~ /#/) {
delete dups[$0]
}}
#Print duplicates in more than one file
END{for(k in dups)
{if(count[k] > 1)
{print ("\n\nDuplicate line found: " k) " - In the following file(s)"
print dups[k] }}
printf "\n";
}' $SITEFILES
awk '
NR {
b[$0]++
}
$0 in b {
if ($0 ~ /#/) {
delete b[$0]
}
if (b[$0]>1) {
print ("\n\nRepeated line found: "$0) " - In the following file"
print FILENAME
delete b[$0]
}
}' $SITEFILES
}
預期的輸入通常如下。
#File Path's
/path/to/file1
/path/to/file2
/path/to/file3
/path/to/file4
#
/more/paths/to/file1
/more/paths/to/file2
/more/paths/to/file3
/more/paths/to/file4
/more/paths/to/file5
/more/paths/to/file5
在這種情況下,/ more/paths/to/file5會出現兩次,應該標記爲這樣。
但是,也有很多新行,我寧願忽略。
呃,它也必須awk中,我在做後期處理一噸,而不想從awk的變化時,該位,如果可以的話:)
這真的好像是比我預期的要強硬一點。
乾杯, 本
順便說一下,您可能想要改進格式,以便您更輕鬆地遵循程序流程。 – 123
另外,這是一個完整的程序,因爲你從來沒有看到設置dups數組或添加任何東西嗎?其實我無法弄清楚你在這個劇本中想要做什麼?你能發佈這個腳本應該解決的問題嗎? – 123
以上更新。我想忽略#和\ n字符,不能讓\ n的人忽略不過。 –