Команда Linux для обрезки файла журнала

Вот пример перемещения файлов.

for f in $(find -name index.js | grep __test__ ); do echo $f; destination=$(echo $f | awk 'BEGIN{FS="/"} {print $2}'); mv ${f}./$destination/data.js; done

Я проверял это, движение выполняется, как и ожидалось.

0
10.03.2020, 16:33
1 ответ

Вопрос не совсем ясен.

Команда

grep -o '(time=[[:digit:]]*)' inputfile

с примером ввода из вопроса печатает

(time=451)
(time=455)
(time=492)

Изменить, чтобы учесть дополнительные требования из комментария:

Для добавления поля даты и времени из начала строк в выходные данные требуется другая команда.

Если все строки ввода содержат (time=...)и начинаются с полей даты и времени, разделенных одиночными символами пробела, вы можете использовать

sed 's/^\([-0-9]* [:0-9]* \).*\((time=[[:digit:]]*)\).*/\1\2/' inputfile

Это печатает

2020-03-10 06:48:20 (time=451)
2020-03-10 06:48:20 (time=455)
2020-03-10 06:48:20 (time=492)

Если есть другие не соответствующие -строки, вы можете комбинировать это с тем же шаблоном grep, что и выше, но опустить -o.

grep '(time=[[:digit:]]*)' inputfile | sed 's/^\([-0-9]* [:0-9]* \).*\((time=[[:digit:]]*)\).*/\1\2/'

Обратите внимание, что шаблон поиска в моей команде sedне очень строгий.

Часть [-0-9]* [:0-9]*соответствует любому количеству цифр и тире в любой комбинации (дате ), за которой следует один пробел, любое количество цифр и двоеточий (время ), за которым снова следует символ единое пространство. Шаблон привязывается к началу строки предыдущим ^.

Таким образом, он также будет соответствовать неправильным полям даты и времени, таким как ---123--456- 9876:54321, или даже двум пробелам в начале строки.

3
28.04.2021, 23:20

Теги

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