[英]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.