繁体   English   中英

Bash Shell脚本为grep搜索的输出分配新变量

[英]Bash Shell Scripting assigning new variables for output of a grep search

编辑2:为了更好地描述我的结果,我决定重写此内容。

我目前正在使用此代码输出各个目录中的文件列表:

for file in /directoryX/*.txt

do
     grep -rl "Annual Compensation" $file
done

输出显示的是所有具有特定表的文件,而这些表我正尝试以这种布局提取:

txtfile1.txt
txtfile2.txt
txtfile3.txt

我一直在每个单独的.txt文件上使用此awk命令来提取表,然后将其发送到.csv:

awk '/Annual Compensation/{f=1} f{print; if (/<\/TABLE>/) exit}' txtfile1.txt > txtfile1.csv

我的目标是找到一个命令,一次对列表中的每个文件运行我的awk命令。 谢谢那些已经提供建议的人。

如果我了解您的要求,我想您想做的就是在grep后面添加一行,或者代替grep来写:

awk '/Annual Compensation/{f=1} f{print; if (/<\/TABLE>/) exit}' $file > ${file}_new.csv

当您说${file}_new.csv ,它将扩展file变量,然后向其添加字符串“ _new.csv”。 那就是你的目标,对吧?

修改代码:

for file in /directoryX/*.txt
do
    files+=($(grep -rl "Annual Compensation" $file))
done

for f in "${files[@]}";do
    awk '/Annual Compensation/{f=1} f{print; if (/<\/TABLE>/) exit}' "$f" > "$f"_new.csv
done

备用代码:

files+=($(grep -rl "Annual Compensation" /directoryX/*))
for f in "${files[@]}";do
awk '/Annual Compensation/{f=1} f{print; if (/<\/TABLE>/) exit}' "$f" > "$f"_new.csv

在这两种情况下,我都无法验证grep结果和awk结果-这只是一个副本-您的代码粘贴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM