Si tiene escasez de memoria y no puede permitirse el lujo de actualizar la RAM, es mejor que encuentre formas de liberar algo de memoria en su servidor. En general, existen muchos procesos/servicios que quizás no necesite. Por ejemplo, en un sistema de servidor no se requiere el servicio de impresión de "tazas". Así que identifique todos esos servicios y desactívelos.
No hay nada de malo en agregar un "intercambio" adicional, pero tenga en cuenta que no es un reemplazo de la RAM. Sus aplicaciones experimentan una degradación grave del rendimiento si comienzan a utilizar el intercambio.
Предполагая, что ваши данные находятся в файле test.txt, должна работать следующая команда
sed -E 's/^(.*)([[:digit:]]{5})(.*)$/\1\2\3\/\2/g' test.txt
Если вы не читаете непосредственно из файла,
input_source | sed -E 's/^(.*)([[:digit:]]{5})(.*)$/\1\2\3\/\2/g'
Выход:
Issue #12345: some more text here https://some.domain/some/path/12345
Что делает команда:
^(.*)
Начать с начала файла и захватить все до следующего совпадения ([[:digit:]]{5})
соответствует следующим 5 цифрам (.*)$
захватить все до конца файла \1\2\3\/\2
каждая совпадающая группа пронумерована (1 -3 в данном случае )и мы форматируем вывод, чтобы получить исходный текст (соответствует 1 -3 ), '/' и затем второй матч.
Для дальнейшего использования было бы идеально, если бы вы описали свою проблему более конкретно. Например, скажите, что вы ищете первые 5 цифр в строке и хотите добавить эти цифры (с предшествующей косой чертой )в конец строки, и сделайте это для каждой строки во входных данных. Я предположил, что это то, что вы имели в виду. Если нет, вы можете обновить свой вопрос, чтобы он был более конкретным.
Вы также можете перечислить некоторые попытки, которые вы предприняли, вместо того, чтобы просто цитировать предыдущие вопросы. Также помогает нам лучше понять, что вы пытаетесь сделать.
sed 's,\([[:digit:]][[:digit:]]*\).*,&/\1,' file
или, если ваш sed
имеет -E
работу с расширенными регулярными выражениями в шаблонах,
sed -E 's,([[:digit:]]+).*,&/\1,' file
Выражение подстановки sed
находит первое положительное целое число (строку цифр )в строке и фиксирует ее. Он также соответствует остальной части строки от этой точки до конца строки. Замещающая часть выражения заменяет совпадающий бит строки всем, что было сопоставлено (&
), за которым следует косая черта и захваченная строка цифр.
Я использую запятые в качестве разделителя в выражении, так как заменяющая часть содержит косую черту, но я мог бы также написать команду как
sed -E 's/([[:digit:]]+).*/&\/\1/' file
Приведенные выше команды будут выполнять замену во всех строках ввода. Чтобы ограничить его строками, начинающимися только со строки Issue #
, используйте
sed -E '/^Issue #/s,([[:digit:]]+).*,&/\1,' file
Я сделал по методу ниже
команда
i=`awk '{print $2}' file.txt| sed "s/^#//g"| sed "s/:$//g"`
awk -v i="$i" '{print $0"/"i}' filetxt
выход
Issue #12345: some more text here https://some.domain/some/path/12345