簡體   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