Я хотел grep строку в первом вхождении ТОЛЬКО из файла (file.dat) и заменить его, читая из другого файла (вывод). У меня есть файл под названием «Выход» в качестве примера содержит «AAA T 0001
»grep и замените
#!/bin/bash
procdir=`pwd`
cat output | while read lin1 lin2 lin3
do
srt2=$(echo $lin1 $lin2 $lin3 | awk '{print $1,$2,$3}')
grep -m 1 $lin1 $procdir/file.dat | xargs -r0 perl -pi -e 's/$lin1/$srt2/g'
done
В основном то, что я хотел: когда-либо строка «AAA» является grep'ed из файла «file.dat» на первом Например, я хочу заменить второй и третий столбцы рядом с «AAA» на «T 0001», но при этом сохранить первый столбец «AAA» как есть. Th выше скрипта в принципе не работает. В основном "$ Lin1" и $ SRT2 переменные не понял внутри 'с/$ Lin1/$ SRT2/г'
Пример:
в моем file.dat У меня есть ряд
ААА D - --- ГОРОД СТРАНА
Что я хочу:
AAA T 0001 ГОРОД СТРАНА
Любые комментарии очень.
, если вам нужно чтобы заменить только первое сообщение, вы должны отбросить «g» в perl regexpr подстановки: perl -pi -e 's/$ lin1/$ srt2 /' –
извините, не понял, что вы хотите сделать. . :( – Kent
Редактирование вашего вопроса для включения ввода образца и требуемого вывода сделало бы намного проще обеспечить решение. Удачи. – shellter