我有一个由文本行填充的文件,我对一组文本感兴趣,每行都以相同的单词开头,每行中有两个数字我稍后必须详细说明,它们总是处于相同的位置,例如:
Round trip time was 49.9721 milliseconds in repetition 5 tcp_ping received 128 bytes back
我正在考虑尝试使用 grep 将想要的行抓取到新文件中,然后将这个新文件的内容放入数组中,以便在详细说明过程中轻松访问它,但这不起作用,有什么提示吗?
#!/bin/bash
InputFile="../data/N.dat"
grep "Round" ../data/tcp_16.out > "$InputFile"
IFS=' ' read -a array <<< "$InputFile"
如果它们只是你关心的,你可以只读进去的数字。
我还强烈建议将要分析的值提取到数组中,而不是将整行存储为字符串:
ms_time_arr=( ) # array: map repetitions to ms_time
bytes_arr=( ) # array: map repetitions to bytes
while read -r ms_time repetition bytes_back _; do
# log to stderr to show that we read the data
echo "At $ms_time ms, repetition $repetition, got $bytes_back back" >&2
ms_time_arr[$repetition]=$ms_time
bytes_arr[$repetition]=$bytes_back
done < <(grep -e 'Round' <../data/N.dat | tr -d '[[:alpha:]]')
# more logging, to show that array contents survive the loop
declare -p ms_time_arr bytes_arr
这通过使用tr
删除所有字母字符,只留下数字、标点符号和空格来工作。