через сценарий удара я пытаюсь найти число значения - из текста в файле, затем заставить новую переменную затем заменить его строкой в том файле, например. в файле в /root/test.txt у меня есть строка web1, я должен сократить номер "1" и увеличить его на 1, таким образом, это будет 2 затем замена web1 web2, именно это я сделал до сих пор какую-либо идею, как сделать его работами?
#!/bin/bash
m=grep 'web' /root/test.txt | awk '{print $2}'
i= $m | cut -c3
i=i+1
n='web$i'
$ sed -i 's/$m/$n/g' /root/test.txt
Демонстрационный вход:
project web0
Демонстрационный вывод:
project web1
AWK может искать и заменить текст также, таким образом, нет никакой потребности использовать grep
или sed
. Рев кода извлекает подстроку из второго столбца (webN
), увеличивает N
и заменяет вторым полем с webN+1
$ cat testInput.txt
project web0
other
project web1
$ awk '/web/{ num=substr($2,4)+1;$2="web"num };1' testInput.txt
project web1
other
project web2
, Это распечатает отредактированный файл на экране. Можно сохранить это в другой файл как так awk [rest of code here] > fileName.txt
и замена, исходная с новым использованием mv fileName.txt oldFile.txt
Спасибо парни, я попробовал этот код, и это хорошо работало для меня,
#!/bin/bash
DPATH="/root/test.txt"
k=$(grep 'web' $DPATH | awk '{print $2}') # web ends by a number#
i=$(grep 'web' $DPATH | awk '{print $2}'| cut -c3)
m=$((i+1))
n="web$m"
sed -i -e 's/'"$k"'/'"$n"'/g' $DPATH
Использование Perl:
perl -pe 's/\bweb\K[0-9]+\b/$&+1/ge' file
Для редактирования файла на месте добавьте -i
опция:
perl -i -pe 's/\bweb\K[0-9]+\b/$&+1/ge' file
-p
: Perl причин для принятия следующего цикла вокруг программы, которая заставляет его выполнить итерации по аргументам имени файла несколько как sed:
LINE:
while (<>) {
... # your program goes here
} continue {
print or die "-p destination: $!\n";
}
-e
: может использоваться для ввода одной строки программы.s/\bweb\K[0-9]+\b/$&+1/ge
: соответствия любой web
строка, которой предшествует граница слова, отбрасывает соответствие и соответствует одной или нескольким цифрам, сопровождаемым границей слова, заменяя соответствие эквивалентным числом, увеличенным 1.% cat file
project web0
project web1
project web2
% perl -pe 's/\bweb\K[0-9]+\b/$&+1/ge' file
project web1
project web2
project web3