2014-07-22 62 views
0

這裏的文件比較是我的代碼:IGNORECASE與AWK

'FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 

它做正是我需要的,除了我需要IGNORECASE。我曾嘗試在各個地方使用IGNORECASE = 1,但無法使其工作。它要麼失敗,要麼給我零結果,要麼一起忽略它。我嘗試過使用BEGIN [IGNORECASE = 1}而沒有運氣。

任何幫助將不勝感激,我在迷路。我在終端窗口運行這個,而不是從bash腳本。這是最終目標

注:輸出必須包含大小寫敏感的匹配原始文件

這裏是我與IGNORECASE嘗試使用的確切代碼:

awk -F, 'IGNORECASE=1 FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'FNR==NR {IGNORECASE=1} {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, '{IGNORECASE = 1} FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'BEGIN {IGNORECASE = 1} FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'FNR==NR {{IGNORECASE=1} a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 

和各種的這些迭代。

+1

而不是大小寫不敏感的比較,嘗試大寫比較。 – alvits

+1

你在使用gawk(GNU awk)嗎? 'IGNORECASE'特定於gawk。你在標題中拼寫爲'IGNORCASE';你確定你在代碼中拼寫正確嗎?複製並粘貼不起作用的確切代碼。 –

+0

我添加了我一直在嘗試的不同迭代,也修正了標題。 tolower工作,但我仍然想知道爲什麼IGNORECASE不工作。我做了awk man,IGNORECASE被列爲選項。 – moore1emu

回答

3
' 
    FNR==NR { 
    a[tolower($1 FS $2 FS $3 FS $4)]++; 
    next 
    } 
    !a[tolower($1 FS $2 FS $3 FS $5)] 
' comparegam.txt workstudyusers1.csv >noidea6.txt 
+0

+1爲便攜式解決方案。 –

+0

tolower工作,謝謝 – moore1emu

+0

出於好奇我注意到你改變括號從[到(大約$ 1部分,具體需要或只是偏好? – moore1emu