Вот что я хотел бы сделать:Заменить часть строк файла, которые соответствуют строки в Bash
У меня есть файл, который ограничен пространством, и у меня есть массив целых чисел. Мне нужно искать каждую строку файла (inv.txt) для каждого элемента массива. Если шаблон найден, мне нужно сохранить первые 7 символов линии и заменить остальные на «0; 0;»
Я очень новый для написания сценариев и то, что я пытался до сих пор это: (я думаю, что я получил немного из колеи)
removing=(3199 26543)
for line in inv.txt
do
for i in "${#removing[@]}"
do
sed -i "s/${removing[$1]/c\ ${line:0,7} 0; 0;/g inv.txt
done
done
Это дало мне SED -e выражение # 1 char 0: нет предыдущего регулярного выражения Я сомневаюсь, что это лучший способ выполнить задачу (если она даже будет) ... Любая помощь приветствуется, спасибо заранее!
Редактировать: Я использую массив, потому что он фактически будет содержать несколько тысяч записей! Два, которые я вложил в этот сценарий, предназначены только для тестирования.
Можете ли вы показать пример ввода и соответствующий ожидаемый выход? – choroba
Да, вот две строки из файла, который я читаю: '100002; 20182; 36205; 36205; 640; 320201; 2000; 1; 1; ' ' 100003; 10273; 26543; 26543; 640; a60101; 2000; 1; 1; ' Вторая строка имеет совпадение, в конце ее следует читать: ' 100003; 0; 0; 0; 0; 0; 8000; 0; 0; ' – user2690569