строка в исходном файле строка заменить на совпадающую строку в целевом файле

Вы можете попробовать мой глупый сценарий предположения:

$./debdatez 
['19   July        2002',
 '6    June        2005',
 '8    April       2007',
 '15   February    2009',
 '6    February    2011',
 '4    May         2013',
 '6    July        2015',
 '22   June        2017']
average time to release Debian: 67293257.1429s
...or: 2 years, 2 months, 18 days
so next release is definitely on 09 August 2019
$ 

В случае, если это не очевидно, не стоит преувеличивать. :Он просто вычисляет среднее время между выпусками и делает "прогноз" на его основе. Тем не менее, достаточно хорошо, чтобы посмотреть, когда начать проявлять любопытство.

-1
04.03.2020, 12:31
1 ответ

Использование цикла чтения while просто выводит результат на стандартный вывод, а не редактирует файл в месте -.

Содержимое файла source.txt

shivps 111111 22222 33333333 Iam_from_source.txt
Iam_from_source-source-source
kaspsa 222222 11111 44444444 Iam_from_source.txt
Iam_from_source-source-source 

Содержимое файла destination.txt

shivps 256146 54645 46561431 Iam_from_destination.txt
Iam_from_destination-destination
kaspsa 212142 21244 21144664 Iam_from_destination.txt
Iam_from_destination-destination

Сценарий.

#!/usr/bin/env bash

source=$1
destination=$2

while IFS= read -r lines_from_source <&3; do
   IFS= read -r lines_from_destination
   if [[ ${lines_from_source%% *} == ${lines_from_destination%% *} ]]; then
     printf '%s\n' "${lines_from_source//$lines_from_destination}"
   else
     printf '%s\n' "$lines_from_destination"
   fi
done 3<"$source" < "$destination"

Запустить сценарий.

./script source.txt destination.txt

Выход

shivps 111111 22222 33333333 Iam_from_source.txt
Iam_from_destination-destination
kaspsa 222222 11111 44444444 Iam_from_source.txt
Iam_from_destination-destination
  • Он работает с предоставленными вами образцами данных, но может не работать, если у вас есть больше шаблонов для сопоставления.
  • Для больших данных/файлов это будет очень медленно.
0
28.04.2021, 23:21

Теги

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