下面的腳本:我如何在變量中聲明csv的特定行和列?
#!/bin/bash
otscurrent="
AAA,33854,4528,38382,12
BBB,83917,12296,96213,13
CCC,20399,5396,25795,21
DDD,27198,4884,32082,15
EEE,2472,981,3453,28
FFF,3207,851,4058,21
GGG,30621,4595,35216,13
HHH,8450,1504,9954,15
III,4963,2157,7120,30
JJJ,51,59,110,54
KKK,87,123,210,59
LLL,573,144,717,20
MMM,617,1841,2458,75
NNN,234,76,310,25
OOO,12433,1908,14341,13
PPP,10627,1428,12055,12
QQQ,510,514,1024,50
RRR,1361,687,2048,34
SSS,1,24,25,96
TTT,0,5,5,100
UUU,294,1606,1900,85
"
IFS="," array1=(${otscurrent})
echo ${array1[4]}
打印:
$ ./test.sh
12
BBB
我試圖得到它只是打印12 ......我甚至不知道如何使它只打印一行5第4列
該變量是sqlquery的輸出,該sqlquery已使用多個sed命令解析並將格式更改爲csv。
otscurrent="$(sqlplus64 user/[email protected]/db as sysdba @query.sql |
sed '1,11d; /^-/d; s/[[:space:]]\{1,\}/,/g; $d' |
sed '$d'|sed '$d'|sed '$d' | sed '$d' |
sed 's/Used,MB/Used MB/g' |
sed 's/Free,MB/Free MB/g' |
sed 's/Total,MB/Total MB/g' |
sed 's/Pct.,Free/Pct. Free/g' |
sed '1b;/^Name/d' |
sed '/^$/d'
)"
最終,我希望能夠調用行和列並在值上運行語句。
起初,我認爲管道進入:
awk -F "," 'NR>1{ if($5 < 10) { printf "%-30s%-10s%-10s%-10s%-10s\n", $1,$2,$3,$4,$5"%"; } else { echo "Nothing to do" } }')"
其中一期工程,但我無法逃避,如果其他的命令......或atleaste我不知道怎麼辦。
回覆:挑選出一個特定的行和列,這是知識庫中已經存在的其他幾個問題。 –
即。 HTTP://計算器。com/questions/11625533/how-can-i-print-a-specific-from-a-specific-line-in-a-delimited-type-file –
awk不僅可以格式化/解析你的csv數據,它也可以像任何編程語言一樣進行條件/循環等。 – anubhava