我是编程新手并决定学习bash,因为我们处理一些基于Linux/Unix的日志服务器,因此脚本编写更容易一些.
我有一个cvs文件,其布局如下:
PC,用户,文件,路径 - 所有逗号分隔.
我有一个行分隔的文件名白名单.有些包括空间.
我的目标是将白名单与csv文件的第3列进行比较,并输出所有不匹配的行.我尝试了一个带有if语句的while循环,但似乎无法让它工作.我做了一些awk一个衬垫,实际上从过去的stackoverflow帖子中得到一个输出与白名单相匹配的行,但我似乎无法弄清楚如何反转逻辑以使其工作.代码如下.
awk 'BEGIN{i=0}
FNR==NR { a[i++]=$1; next }
{ for(j=0; j<i; j++)
if(index($0,a[j]))
{print $0;break}
}' $whitelist $exestartup
Run Code Online (Sandbox Code Playgroud)
我想坚持使用没有附加组件的基本bash,而不是反对做一个循环/ if语句而不是一个awk单行.
样本输入/输出:
whitelist.txt
program.exe
super program.exe
possible-program.exe
exestartup.csv
Asset1,user1,potato.exe,c:\ users\user1
Asset2,user2,program.exe,c:\ users\user2
Asset3,user3,possible-program.exe,c:\ users\user3
Asset4,user4,super program .exe文件C:\用户\ USER4
产量
Asset1,用户1,potato.exe,C:\用户\ USER1