繁体   English   中英

仅将文本文件中的特定列读取到 bash 脚本中的数组中

[英]Reading only particular column(s) from a text file into array in bash script

输入文件 log.txt

--- Iteration      1(  37)  --

--- Iteration      1(  38)  --

--- Iteration      1(  39)  --

--- Iteration      2(   1)  --

--- Iteration      2(   2)  --

--- Iteration      2(   3)  --

预期 output; array1 [1 1 1 2 2 2] 和 array2 [37 38 39 1 2 3]

是否有任何命令可以指定将特定列(由列号标识)读入第一列的数组和将特定列范围(由列号范围标识)读入第二列的第二个数组。 谢谢你。

使用 bash 和正则表达式:

a1=(); a2=()
while read -r line; do
  if [[ "$line" =~ ([0-9]+)\(\ +([0-9]+) ]]; then
    a1+=("${BASH_REMATCH[1]}")
    a2+=("${BASH_REMATCH[2]}")
  fi
done < log.txt
declare -p a1 a2

Output:

declare -a a1=([0]="1" [1]="1" [2]="1" [3]="2" [4]="2" [5]="2")
declare -a a2=([0]="37" [1]="38" [2]="39" [3]="1" [4]="2" [5]="3")

我假设 log.txt 不包含任何空行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM