小编Jam*_*mes的帖子

将txt文件与csv bash中的第三列进行比较

我是编程新手并决定学习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

bash shell awk

3
推荐指数
1
解决办法
233
查看次数

标签 统计

awk ×1

bash ×1

shell ×1