GNU bash,版本3.2.25(1) - 釋放(x86_64-redhat-linux-gnu)。使用Bash - 在for循環中重複常量,其中返回多個結果
我有一個文件目錄(每天多個文件),我想從中提取某些數據。
每個文件都有一系列值不變的文件(AuditID,ProcessID等),並且每個文件出現一次。 然後每個文件都有許多以「STEP = XFR」開頭的行
目標:創建包含上述常量的單行輸出以及以「STEP = XFR」開頭的每行。
問題:當我運行FOR LOOP來處理文件時,常量每個文件只回顯一次,而不是每行。
我已經搜索和搜索(並且對bash很新),但還沒有找到答案。
我用sed解析了STEP = XFR行,在那裏我以某種方式能夠在替換中包含常量,但我挖走了大部分sed語句,但我真的不理解它,因此選擇爲更清楚的事情。
目前我正試圖簡單地輸出未解析的STEP = XFR行,同時連接前面的常量。
這是我有......並且非常感謝。
region=$1
log_date=$2
cur_date=`date +%Y%m%d`
if [[ -z $1 ]]; then
region=$Region
fi
if [[ -z $2 ]]; then
log_date=$cur_date
fi
#define location of source file
file_loc='/bl/project/'$region'/netezza/log'
#declare directory/file mask
files=$file_loc'/LOG_nz_flow_execute_svckmnz_elt_'$log_date'*.log'
#define file name and location to put results
xfrmon_results="/home/userid/quality/xfrmon_"$region"_"$log_date".dat"
#loop through files...
for f in $files
do
#grep for values
d='|'
AuditID=$(grep "^Audit ID" $f | cut -d':' -f2 | head -n 1)
ProcessID=$(grep "^Process ID" $f | cut -d':' -f2 | head -n 1)
xfrmeta=$(grep "STEP=XFR " $f)
lineout="$region$d$log_date$d$AuditID$d$ProcessID$d$xfrmeta"
echo "$lineout"
done
結果:
- 珠三角| 20130922 | 8900983 | 7718 |
- prd | 20130922 | 8900984 | 12248 | STEP = XFR開始= 2013-09-22 03:30:08.493374結束= 2013-09-22 03:30:08.988577持續時間(秒)= 1 書寫= [1]
- STEP = XFR Start = 2013-09-22 05:09:54.014299結束= 2013-09-22 05:09:56.610330持續時間(秒)= 2寫入= [1]
- STEP = XFR Start = 2013-09-22 05:09 :51.886866結束= 2013-09-22 05:09:52.539379持續時間(secs)= 1書寫= [1]
- STEP = XFR開始= 2013-09-22 05:09:51.831049結束= 2013-09- 22 05:09:52.319850持續時間(秒)= 1書寫= [1]
- prd | 20130922 | 8900985 | 11316 |
- prd | 20130922 | 8900986 | 989 |
- prd | 20130922 | 8900987 | 1977年|
- prd | 20130922 | 8900988 | 25269 | STEP = XFR開始= 2013-09-22 05:45:07.923100結束= 2013-09-22 05:45:08.299312持續時間(秒)= 1 書面= [1]
- STEP = XFR Start = 2013-09-22 06:11:43.464400結束= 2013-09-22 06:11:47.741536持續時間(秒)= 4寫入= [1]
- prd | 20130922 | 8900989 | 8962 | STEP = XFR開始= 2013-09-22 05:50:10.625196結束= 2013-09-22 05:51:49.113589 持續時間(秒)= 99寫入= [62617537]
- STEP = XFR Start = 2013-09-22 05:51:49。195200結束= 2013-09-22 05:51:51.322727持續時間(秒)= 2寫入= [0]
- STEP = XFR開始= 2013-09-22 05:51:51.558343結束= 2013-09-22 05:52:12.234552持續時間(秒)= 21寫入= [62617537]
- prd | 20130922 | 8900990 | 9061 | STEP = XFR開始= 2013年9月22日 05:51:17.891031結束= 2013年9月22日05:51:18.923637持續時間(秒)= 2 書面= [82]
期望結果:(區域,LOG_DATE,AuditID &的ProcessID重複自己每個時間步長= XFR被回顯。)
- PRD | 20130922 | 8900983 | 7718 |
- prd | 20130922 | 8900984 | 12248 | STEP = XFR開始= 2013-09-22 03:30:08.493374結束= 2013-09-22 03:30:08.988577持續時間(秒)= 1 書面= [1]
- prd | 20130922 | 8900984 | 12248 | STEP = XFR開始= 2013-09-22 05:09:54.014299結束= 2013-09-22 05:09:56.610330持續時間(秒)= 2 書面= [1]
- prd | 20130922 | 8900984 | 12248 | STEP = XFR開始= 2013-09-22 05:09:51.886866結束= 2013-09-22 05:09:52.539379持續時間(秒)= 1 書面= [1]
- prd | 20130922 | 8900984 | 12248 | STEP = XFR開始= 2013-09-22 05:09:51.831049結束= 2013-09-22 05:09:52.319850持續時間(秒)= 1 書面= [1]
- prd | 20130922 | 8900985 | 11316 |
- prd | 20130922 | 8900986 | 989 |
- prd | 20130922 | 8900987 | 1977年|
- prd | 20130922 | 8900988 | 25269 | STEP = XFR開始= 2013-09-22 05:45:07.923100結束= 2013-09-22 05:45:08.299312時長(秒)= 1 書寫= [1]
- prd | 20130922 | 8900988 | 25269 | STEP = XFR開始= 2013-09-22 06:11:43.464400結束= 2013-09-22 06:11:47.741536時長(秒)= 4 書面= [1]
- prd | 20130922 | 8900989 | 8962 | STEP = XFR開始= 2013-09-22 05:50:10.625196結束= 2013-09-22 05:51:49.113589 持續時間(秒)= 99寫入= [62617537]
- prd | 20130922 | 8900989 | 8962 | STEP = XFR開始= 2013-09-22 05:51:49.195200結束= 2013-09-22 05:51:51.322727持續時間(秒)= 2 書面= [0]
- prd | 20130922 | 8900989 | 8962 | STEP = XFR開始= 2013-09-22 05:51:51.558343結束= 2013-09-22 05:52:12.234552 持續時間(秒)= 21寫入= [62617537]
- prd | 20130922 | 8900990 | 9061 | STEP = XFR開始= 2013-09-22 05:51:17.891031結束= 2013-09-22 05:51:18。923637持續時間(秒)= 2 書面= [82]