как вставить содержимое файла в спичку с помощью sed - только первое появление [duplicate]

Я бы сделал это в два этапа.

Сначала интерполируйте недостающие данные. Вот пример с awk :

awk '
    ($1 - prev1) > 0.25 { printf "%.2f  %.2f\n", prev1 + 0.25, (prev2 + $2)/2 }
    { print; prev1 = $1; prev2 = $2 }
' data_file

Он работает следующим образом:

  • Во-первых, если мы замечаем, что значение в столбце 1 отсутствует (разрыв с предыдущим значением> 0,25), мы печатаем отсутствующее строка путем вычисления среднего значения для столбца 2.
  • Затем мы печатаем текущую строку и устанавливаем предыдущие значения для следующего цикла

Наконец, вы можете отфильтровать нежелательные строки:

(previous awk command) | awk '$1 ~ /0$/'

Эта последняя Команда awk отображает только строки, первое значение которых заканчивается на 0 .

1
16.07.2016, 02:24
2 ответа

с 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 для редактирования на месте).

4
27.01.2020, 23:16

Попробуйте это

$ 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
1
27.01.2020, 23:16

Теги

Похожие вопросы