Unix sed управляет для нахождения нескольких строковых шаблонов

Используя встроенную оболочку set -x вероятно, дешевый-и-грязный способ сделать это. В сценариях оболочки Вы будете часто видеть строку как:

#set -x

Который кто-то оставленный позади, просто комментируя его. Я думаю, что Вы могли использовать это в интерактивной командной строке, но Вам не может понравиться то, что она делает там.

0
25.08.2014, 17:44
7 ответов

Вот то, как я выполнил бы это:

$ sed -e '/^$$file_name/ s|$|V1|' AS_IS

это находит строки, которые запускаются с "$file_name..". Для тех строк мы сделаем поиск и замену. $ конец строки, таким образом, мы по существу добавляем a V1 к каждой из этих совпавших строк. Можно перенаправить эти результаты в файл как так:

$ sed -e '/^$$file_name/ s|$|V1' AS_IS > to_be
1
28.01.2020, 02:53

Можно использовать

sed -i -e 's/\$\$file_name=.*/&V1/' file.txt   
0
28.01.2020, 02:53
  • 1
    Спасибо за быстрый ответ.. не wrking.i имеют ниже требования. –  user43067 15.07.2013, 17:34
  • 2
    @user43067 я адаптировал ответ. –  jofel 15.07.2013, 17:38
  • 3
    эй благодарит за быстрый ответ купленную потребность информация о ниже sed-f вход pattern.txt> вывод в pattern.txt, я использую список наклона команд i harcode, который оценивает, я имею в виду если я giv в ниже формата его работа s/a/b/g, но если я gve в ниже формата.. $a/$b/g s/, где $a=1 и $b=2 не работа.. предложите –  user43067 15.07.2013, 18:25

Попробуйте это решение. Работавший для меня:

sed -i 's/\$\$file_name.*/&V1/' foobar

где foobar Ваш входной файл.

0
28.01.2020, 02:53
  • 1
    Его генерирующаяся ошибка, если я делаю то же в цикле с условием продолжения –  user43067 15.07.2013, 18:30
  • 2
    Какая ошибка? Синтаксическая ошибка? –  unxnut 15.07.2013, 20:05

Я записал бы это как

sed -i '/^\$\$file_name=/ s/$/V1/' file
0
28.01.2020, 02:53
  • 1
    db2-x "избранное ИМЯ от xxx, где ACCT_DT = '07/12/2013'"> file_name11 FILE_VERSION =db2 -x "select Version from xxx where date='07/12/2013'" в то время как считанное имя файла действительно повторяет "$filename" FILE_NAME1 =echo ${filename}${FILE_VERSION} $FILE_NAME1 эха sed-f вход pattern.txt> производят сделанный <эхо file_name11 pattern.txt "$filename" повторяет "$FILE_NAME1" s/$ {имя файла} / $ {FILE_NAME1}/g, но в последней строке s/$ {имя файла} / $ {FILE_NAME1}/g является работой nt.. я должен явно передать подобный значению s/a/b/g –  user43067 15.07.2013, 18:34
  • 2
    , который Вы не можете поместить, правильно форматировал код в комментарии. Отредактируйте свой вопрос. –  glenn jackman 15.07.2013, 18:49
  • 3
    я пытался форматировать Ваш код, но похож на Вас, имеют ошибки там. Можете Вы форматировать свой код в вопросе так, чтобы мы видели то, что путает Вас, может делать и предлагать решение. –  unxnut 15.07.2013, 20:04

Если Вы хотите использовать "командный файл" с sed, можно поместить следующее в файл

s/\$\$file_name=.*/&V1/

Выполнение процесс следующим образом

sed -f pattern.txt <AS_IS >to_be
0
28.01.2020, 02:53
  • 1
    : sed: Функция/^ $$file_name/s| $ |V1 не может быть проанализирована. –  user43067 16.07.2013, 12:35

Это было решением, с которым я пошел:

while read filename
 do
echo "s/${file_name}(0)/${file_name}(${file_ver})/g" >> replaceMFNames.txt    
done < file_name11
sed -f replaceMFNames.txt inputfile > outputfile
0
28.01.2020, 02:53
  • 1
    можно ли отметить этот ответ как тот, который решил вопрос? –  Braiam 21.07.2013, 07:47

Вы можете анализировать данные непосредственно в DB2. Если вы хотите использовать регулярные выражения, вы используете xQuery, а затем производите желаемый результат. Таким образом, вам не нужно иметь дело с sed.

0
28.01.2020, 02:53

Теги

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