2013-06-03 90 views
1

我想使用下面的代碼(Ref:-Perreal)來運行多個文件。我不想逐個打印輸出,而是要將每個文件的輸出保存到具有輸入文件名的另一個文件夾中。printng輸出到另一個文件夾

任何幫助將不勝感激!

for i in folder1/*.txt; 
do 
awk ' 
BEGIN { 
path=sprintf("%s", "/home/chima/Desktop/folder2/") 
} 
!s[1":"$4":"$5]++{sU[$4]++;tot++} 
!s[2":"$4":"$5]++{sU[$5]++;tot++} 
END { 
for (x in sU) 
print x, sU[x], sU[$1] > path FILENAME; 
print "Total No -",tot > path FILENAME; 
}' $i; 
done 

錯誤: -

awk: cmd. line:9: (FILENAME=folder1/file1.txt FNR=955) fatal: can't redirect to `/home/chima/Desktop/folder2/folder1/file1.txt' (No such file or directory) 

實際上文件夾1和文件夾2是在桌面上。

回答

1

您可以在BEGIN節中定義的路徑,並把它作爲print語句後定期awk的變量。 FILENAME是一個awk內置變量,用於存儲正在處理的文件的名稱。

for i in files/*.txt; 
do 
awk ' 
BEGIN { 
    path=sprintf("%s", "/path/to/anotherfolder/") 
} 
!s[1":"$4":"$5]++{sU[$4]++;tot++} 
!s[2":"$4":"$5]++{sU[$5]++;tot++} 
END { 
    sub(/.*\//,"",FILENAME) 
    for (x in sU) 
     print x, sU[x], sU[$1] > path FILENAME; 
     print "Total No -",tot > path FILENAME; 
}' $i; 
done 
+0

我試過了。我得到這樣的錯誤:awk:cmd。第9行:(FILENAME = folder1/file1.txt FNR = 955)fatal:無法重定向到「/home/chima/Desktop/folder2folder1/file1.txt」(無此文件或目錄) – user2447904

+0

添加'/'在你的路徑變量中。您的錯誤消息中的folder2folder1似乎缺少正斜槓。 –

+0

我檢查了它。正斜槓沒有錯過。 – user2447904

0

改變您的打印語句:

print "Total No -",tot >"/home/user/anotherfolder/"FILENAME; 
相關問題