[英]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.