Замена линии другой строкой в ​​unix [duplicate]

Если вы используете XSLT 2.0, укажите xpath-default-namespace = "http://www.example.com" в разделе stylesheet .

15
задан codaddict 15 December 2010 в 04:42
поделиться

4 ответа

28
ответ дан codaddict 16 August 2018 в 10:42
поделиться

это фрагмент, который я использую, он удаляет все вещи между APA и BEPA (через несколько строк, включая удаление APA, BEPA) во всех файлах ниже текущего каталога, исключает каталог .svn

find . \! -path '*.svn*' -type f -exec sed -i -n '1h;1!H;${;g;s/APA[ \t\r\n]*BEPA//g;p}' {} \;
0
ответ дан JohnSmith 16 August 2018 в 10:42
поделиться

Проверьте это

http://cs.boisestate.edu/~amit/teaching/handouts/cs-unix/node130.html

##########################################################
\#!/bin/sh

\# sed/changeword

prog=`basename $0`

case $# in
0|1) echo 'Usage:' $prog '<old string> <new string>'; exit 1;;
esac

old=$1
new=$2
for f in *
do
        if test "$f" != "$prog"

        then
            if test -f "$f"
            then
                sed "s/$old/$new/g" $f > $f.new
                mv $f $f.orig
                mv $f.new $f
                echo $f done
            fi
        fi
done

##############################################################
0
ответ дан Lucas Zamboulis 16 August 2018 в 10:42
поделиться

Выход выводится на экран (stdout) из-за следующего:

sed "s/$OLD/$NEW/g" "$f"

Попробуйте перенаправить на файл (следующий переадресовывается к новым файлам и затем переименовывает его, чтобы перезаписать исходный файл ):

sed "s/$OLD/$NEW/g" "$f" > "$f.new" && mv "$f.new" "$f"
2
ответ дан NPE 16 August 2018 в 10:42
поделиться
  • 1
    Это создает файл .text.new и исходный файл, example.txt перезаписывается и пуст. Любые идеи почему? – terrid25 14 December 2010 в 11:32
  • 2
    @ user390426: Может быть, потому, что aix не цитировал переменные "$f.new"' (two places) and "$ f & quot; . Also, the mv` не должен быть безусловным. Вместо этого он должен быть sed ... && mv .... – Dennis Williamson 14 December 2010 в 12:07
  • 3
    @Dennis Спасибо за предложения. Я редактировал сообщение. – NPE 14 December 2010 в 12:26
  • 4
    Хорошо, теперь я изменил $ OLD на URL-адрес, и он возвращает ошибку: sed: не удалось открыть файл ww.google.co.uk//g: Никакого такого файла или каталога команда 'sed' не кажется как // часть URL-адреса. Есть ли способ преодолеть это? – terrid25 14 December 2010 в 13:48
  • 5
    @ user390426: измените разделитель в команде sed: "s|$OLD|$NEW|g". – Dennis Williamson 14 December 2010 в 16:13
Другие вопросы по тегам:

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