Я бы сделал это в два этапа.
Сначала интерполируйте недостающие данные. Вот пример с awk
:
awk '
($1 - prev1) > 0.25 { printf "%.2f %.2f\n", prev1 + 0.25, (prev2 + $2)/2 }
{ print; prev1 = $1; prev2 = $2 }
' data_file
Он работает следующим образом:
Наконец, вы можете отфильтровать нежелательные строки:
(previous awk command) | awk '$1 ~ /0$/'
Эта последняя Команда awk
отображает только строки, первое значение которых заканчивается на 0
.
с ed
вместо sed
ed -s << EOF file.txt
0,/MATCH/-1 r text.txt
,p
q
EOF
или как однострочный
printf '0,/MATCH/-1 r text.txt\n,p\nq' | ed -s file.txt
-----
add this text file
before first match
MATCH
-----
MATCH
-----
MATCH
-----
(замените ,p
на w
для редактирования на месте).
Попробуйте это
$ sed '0,/MATCH/ s/MATCH/add this text file\nbefore first match\nMATCH/' file.txt
или просто используйте другое выражение sed для вывода
$ sed '0,/MATCH/i prependme once' file.txt | sed 1d
для добавления содержимого файла
$ sed -e '0,/MATCH/s/MATCH/$(cat text.txt)\nMATCH/' file.txt
Другое возможное решение с использованием -----
в качестве соответствующей строки
$ sed '0,/-----/r text.txt' file.txt