[英]Cut the output of my FILENAME variable with awk?
我有這個腳本:
for fn in /var/www/cgi-bin/LPAR_MAP/*; do awk -F',|;' 'NR==1 { print "FILENAME ========================== : " FILENAME }
/'$test'/ {
print ""
print "LPARS :" $2
print "RAM : " $5
print "CPU 1 : " $6
print "CPU 2 : " $7
print ""
print ""}' $fn; done
這個腳本可以讓我顯示來自CSV的信息,如下所示:
FRAME : MIAIBYA00
------------------
FILENAME ========================== : /var/www/cgi-bin/LPAR_MAP/PowerSys-LPARProcPool-20180705.csv
LPARS :miavioya01-not-work
RAM :
CPU 1 :
CPU 2 :
FILENAME ========================== : /var/www/cgi-bin/LPAR_MAP/PowerSys-LPARmap-20180122.csv
LPARS :miaibc05
RAM : 40
CPU 1 : null
CPU 2 : 2
LPARS :miaiba05
RAM : 18
CPU 1 : null
CPU 2 : 2
文件名輸出為:
FILENAME ========================== : /var/www/cgi-bin/LPAR_MAP/PowerSys-LPARmap-20180122.csv
但我只想保留日期:
FILENAME ========================== : 20180122
我可以使用以下命令在終端中執行此操作:
echo FILENAME ========================== : /var/www/cgi-bin/LPAR_MAP/PowerSys-LPARmap-20180122.csv | cut -d '-' -f4 | cut -d'.' -f1
但是我不知道該如何在腳本中執行此操作...您可以告訴我如何執行此操作嗎?
更改
{ print "FILENAME ========================== : " FILENAME }
至
{ split(FILENAME,a,"[-.]");print "FILENAME ========================== : " a[4] }
它將FILENAME
用-
和分隔.
並將其存儲在數組a
。 然后日期應在陣列堡壘塊a
, a[4]
{split($0,a,"[-.]");t=substr(a[4],1,4)"-"substr(a[4],5,2)"-"substr(a[4],7);print t}
2018-01-22
您可以使用以下代碼:
for fn in /home/bodia/affdex-sdk/docs/*; do awk -F',|;' 'function basename(file, a, n) {
n = split(file, a, "/")
split(a[n], a, ".")
return a[1]
}
NR==1 { print "FILENAME ========================== : " basename(FILENAME) }
/'$test'/ {
print ""
print "LPARS :" $2
print "RAM : " $5
print "CPU 1 : " $6
print "CPU 2 : " $7
print ""
print ""}' $fn; done
最簡單的方法是提供多個字段分隔符,例如-F[-]"|"[.]
,這會將您的數字分隔為$(NF-1)
。 例如:
awk -F[-]"|"[.] '{ print $(NF-1) }'
結果輸出:
20180122
在您希望與"FILENAME"
匹配的完整文件的開頭運行,例如
awk -F[-]"|"[.] '/^FILENAME/{ print $(NF-1) }'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.