split string at first occurrence of a delimiter

Следующий пример должен работать на вас.

sed 's#<a href="">\(.*\)</a>#<a href="HTML-EX/html/\1.html">\1</a>#'

Сначала он захватывает текст между тегами a, который представлен переменной \ 1 . Затем используйте переменную в строке результата.

2
17.01.2016, 19:56
2 ответа

Это сделает то, что задает заголовок этого вопроса: "разделить строку при первом появлении разделителя"

#!/bin/bash
while read -r line; do
    [[ $line =~ :(.*) ]] && echo "${BASH_REMATCH[1]}"
done <<<"$(grep "100200300" my.log*)"

Однако я считаю, что вам нужно следующее:

grep -h "100200300" my.log*

Параметр -h приведет к содержимому файла без имен файлов:

Jan 17 15:04:52 100200300 ok
Jan 17 14:35:17 100200300 failed
0
27.01.2020, 22:11

Вы также можете сделать это, чтобы избавиться от имен файлов:

cat my.log* | grep "100200300"
0
27.01.2020, 22:11

Теги

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