Я хотел бы получить несколько советов, используя sed о том, как заменить value1 в первом столбце, который соответствует value2:

value1 = 9999
value2 = 02a-ResetFlag.sh

Data File
----------------------------------
0500 * * 1 ( 02-StartFix.sh)

1850 * * 1 ( 02a-ResetFlag.sh)

2000 * * 1 ( 03-StopFix.sh)

2005 * * 1 ( 04-DssEOD.sh)

Expected output:
-----------------------------------
0500 * * 1 ( 02-StartFix.sh)

9999 * * 1 ( 02a-ResetFlag.sh)

2000 * * 1 ( 03-StopFix.sh)

2005 * * 1 ( 04-DssEOD.sh)

заранее спасибо.

2 ответа2

1

Если содержание data файла является

0500 * * 1 ( 02-StartFix.sh)
1850 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)

затем

sed -i -r '/02a-ResetFlag.sh/{s/^([0-9]+)(.*)$/9999\2/g}' data

изменит data файла на

0500 * * 1 ( 02-StartFix.sh)
9999 * * 1 ( 02a-ResetFlag.sh)
2000 * * 1 ( 03-StopFix.sh)
2005 * * 1 ( 04-DssEOD.sh)

протестировано в GNU sed version 4.2.1

0

Предполагая, что шаблон поиска находится в конце строки ($ - маркер конца строки), а строка замены - в начале файла:

sed '/02a-ResetFlag.sh)$/ s/^1850/9999/'  data-file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .