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