我有太多这样的变量:
var1="FACEBOOK"
var2="TWITTER"
var3="INSTAGRAM"
...
我需要找到关于我的变量的最后一行:
var1_last=$(tail -n +1 logfile.txt | awk '$9 ~ "FACEBOOK" {print $0}' | tail -n1)
我需要像这样更改此输出:
day=${var1_last:8:2}
month=${var1_last:4:3}
year=${var1_last:20:4}
hour=${var1_last:11:2}
min=${var1_last:14:2}
if [ "$month" == "Jan" ];then
month=01
...
但是我没有变量,我有很多变量,我需要为所有变量做到这一点。我可以复制/粘贴所有行,并将var1更改为var2,但它很难。
如何使用数组执行此操作?
答案 0 :(得分:1)
目前还不清楚你在问什么,但我想这至少可以帮助你找到正确的方向。
array=("FACEBOOK" "TWITTER" "INSTAGRAM")
for var in "${ARRAY[@]}"; do
last="$(tail -n +1 logfile.txt | awk '$9 ~"'"$var"'"' | tail -n 1)"
:
done
但是,作为一个纯粹的Awk脚本,整个事情更有意义。
awk 'BEGIN { a[1] = "FACEBOOK"; a[2] = "TWITTER"; a[3] = "INSTAGRAM" }
1==NR { next }
$9 in a { b[$9] = $0 } # parse the line into individual fields here
END { for (k in b) print b[k] }' logfile.txt
答案 1 :(得分:1)
array[0]="$var1"
array[1]="$var2"
array[2]="$var3"
.
.
然后使用"用于"循环遍历该数组中的所有单元格并选择所需的部分。请注意,索引从零开始,即任何数组中的第一个单元格都在索引零中。