我有一个由文本行填充的文件,我对其中的一组感兴趣,每行都以相同的单词开头,每行中有两个数字,我必须稍后详细说明,它们总是在相同的位置,例如:
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"
答案 0 :(得分:1)
如果他们只关心你,你只能阅读中的数字。
我还强烈建议将你要分析的值提取到数组中,而不是将整行存储为字符串:
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
删除所有字母字符,只留下数字,标点符号和空格。