Следующий пример должен работать на вас.
sed 's#<a href="">\(.*\)</a>#<a href="HTML-EX/html/\1.html">\1</a>#'
Сначала он захватывает текст между тегами a, который представлен переменной \ 1
. Затем используйте переменную в строке результата.
Это сделает то, что задает заголовок этого вопроса: "разделить строку при первом появлении разделителя"
#!/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
Вы также можете сделать это, чтобы избавиться от имен файлов:
cat my.log* | grep "100200300"