Используя встроенную оболочку set -x
вероятно, дешевый-и-грязный способ сделать это. В сценариях оболочки Вы будете часто видеть строку как:
#set -x
Который кто-то оставленный позади, просто комментируя его. Я думаю, что Вы могли использовать это в интерактивной командной строке, но Вам не может понравиться то, что она делает там.
Вот то, как я выполнил бы это:
$ sed -e '/^$$file_name/ s|$|V1|' AS_IS
это находит строки, которые запускаются с "$file_name..". Для тех строк мы сделаем поиск и замену. $
конец строки, таким образом, мы по существу добавляем a V1
к каждой из этих совпавших строк. Можно перенаправить эти результаты в файл как так:
$ sed -e '/^$$file_name/ s|$|V1' AS_IS > to_be
Попробуйте это решение. Работавший для меня:
sed -i 's/\$\$file_name.*/&V1/' foobar
где foobar
Ваш входной файл.
Я записал бы это как
sed -i '/^\$\$file_name=/ s/$/V1/' file
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
Если Вы хотите использовать "командный файл" с sed, можно поместить следующее в файл
s/\$\$file_name=.*/&V1/
Выполнение процесс следующим образом
sed -f pattern.txt <AS_IS >to_be
Это было решением, с которым я пошел:
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
Вы можете анализировать данные непосредственно в DB2. Если вы хотите использовать регулярные выражения, вы используете xQuery, а затем производите желаемый результат. Таким образом, вам не нужно иметь дело с sed.