![](/img/trans.png)
[英]how to get a field participating in 'n' records in a file using awk when some other field has same value in all those 'n' records?
[英]awk - command how to handle when file has no records
我有awk命令比較兩個csv文件,如果找到記錄,則附加文件中的值來自一個文件並創建一個新文件。它可以正常工作並在兩個文件都有記錄時給出預期的輸出。 但是當其中一個文件為空時沒有得到所需的結果。 如何處理空文件並獲得所需的輸出
我的劇本是
#!/bin/ksh
set -x
#dos2unix $SCRIPT_HOME/input/declined/file1.csv $SCRIPT_HOME/input/declined/file1.csv
/usr/xpg4/bin/awk 'BEGIN{FS=OFS="|"} FNR==NR {a[$2]=$1 ;b[$15]=$15;c[17]=substr($17,1,1);next;}
{
print $12;
if($12 in b){
print $0,a[$17],c[17];
}
else {
{print $0}}
}' $SCRIPT_HOME/input/declined/declined.csv $SCRIPT_HOME/input/declined/file2.csv > $SCRIPT_HOME/input/error/file2.csv
在我的情況下,當文件rejected.csv為空時,我只想打印出file2.csv記錄。
更改:
FNR==NR
至:
FILENAME==ARGV[1]
我用了選項[ ! -s $SCRIPT_HOME/input/declined/declined.csv ] ||
[ ! -s $SCRIPT_HOME/input/declined/declined.csv ] ||
驗證文件是否為空。
[ ! -s $SCRIPT_HOME/input/declined/declined.csv ] ||
/usr/xpg4/bin/awk 'BEGIN{FS=OFS="|"} FNR==NR {a[$2]=$1 ;b[$15]=$15;c[17]=substr($17,1,1);next;}
{
print $12;
if($12 in b){
print $0,a[$17],c[17];
}
else {
{print $0}}
}' $SCRIPT_HOME/input/declined/declined.csv $SCRIPT_HOME/input/declined/file2.csv > $SCRIPT_HOME/input/error/filea2.csv
[ -s $SCRIPT_HOME/input/declined/declined.csv ] ||
{
print " i am here executing";
cp $SCRIPT_HOME/input/declined/file2.csv $SCRIPT_HOME/input/error/file2.csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.