我有test.txt文件,其中包含文件中的以下数据。
Cat test.txt
BG BEGIN BS JOB
OPERATOR: BICJobname
Select EMP_NAME ,salary,dep_name from EMP_Table Where DEP_ID=101
END BS JOB
BG BEGIN BS JOB
OPERATOR: BICJobname1
Select EMP_NAME ,salary from EMP_Table1 Where DEP_ID=102
END BS JOB
BG BEGIN BS JOB
OPERATOR: BICJobname3
Select EMP_NAME from EMP_Table2 Where DEP_ID=102
END BS JOB
BG BEGIN BS JOB
OPERATOR: BICJobname5
Select EMP_NAME,Date_Of_Joining,Salary from EMP_Table3 Where DEP_ID=101
END BS JOB
BG BEGIN BS JOB
OPERATOR: BICJobname6
Select EMP_NAME,Date_Of_Joining,Salary from EMP_Table3 Where DEP_ID=101
END BS JOB
我的问题: - 如果我在上面的文件中搜索了列名(字符串作为工资),我需要获得具有工资文件的作业名称。
O / P
Job Name
BICJobname1 salary
BICJobname3 No
BICJobname5 Salary
BICJobname6 Salary
答案 0 :(得分:1)
使用awk
匹配OPERATOR:
行,然后使用getline
阅读下一行,看看它是否有薪水。
awk '/OPERATOR:/ { job = $2; getline;
if (tolower($0) ~ /salary/) sal = "Salary"; else sal = "No";
print job, sal }'
答案 1 :(得分:0)
您可以结合 grep 和剪切命令来隔离包含“Salary”的行,然后仅选择作业的名称。
想象一下,你有输出
o/p
Job Name
BICJobname1 salary
BICJobname3 No
BICJobname5 Salary
BICJobname6 Salary
在名为 output.txt 的文件中。你可以运行:
grep -i salary output.txt | cut -d ' ' -f1
获取:
BICJobname1
BICJobname5
BICJobname6