поэтому у меня есть файл step1, содержащий такие данные, как
field [T]:0.000
heatstart [s]: 1.50E+1
a[a],b[b],[c[c],d
1.02E-1,2.31E-1,...
1.50E+1,4.26E-1,...
...
и файл с именем var4, содержащий только запись 1.50E+1
. Я использовал mapfile, чтобы получить эту запись как переменную
mapfile -t var<var4
какой grep может использовать для поиска в данных, чтобы дать мне номер строки
grep -n "${var[0]}" step1
Использование этого дает мне только запись в строке 2 шага 1, а не запись в строке 5. Если я скопирую запись из строки 5 в другую строку в начале, я не получу ее и с помощью grep, но если я скопирую ее где-то в середине строки его получает grep. Но если я вставлю файл step1 в себя, других результатов я не получу.
Я также попытался получить переменную для 1.50E + 1 с помощью sed и вырезать как
sed -n '2p' < step1>var3
var4="$(cut -c15- var3)"
но это приводит к той же проблеме. Перед числом в переменной нет места, потому что даже если я вырежу так много из того, что 1 больше не будет в переменной, я не получу всех результатов. Кто-нибудь знает, почему это происходит или как это обойти?
Я так понимаю, у вас будет много файлов stepN и varN?
Я бы использовал параметр -f для grep и -n, как и у вас.
grep -n -f var4 step4
Это выводит:
mdiehn@frank ~ $ grep !*
grep -n -f var4 step4
1:tstart [s]: 1.50E+1
4:1.50E+1,4.26E-1,...
Если вам не нужен tstart, либо устраните его с помощью grep -v, либо мы можем перейти к более интересным сценариям awk.