LINUX.ORG.RU

Как удалить весь текст кроме нужной строки используя sed?

 


0

2

подскажите,пожалуйста, есть текстовый файл,

где-то в нем есть строка вида link=141931341# (нужный текст заканчивается #) как удалить все (включая #) оставив в файле только нужную строку используя SED

grep 'link=141931341#'

/thread

anonymous ()
Ответ на: комментарий от anonymous

link=......# всегда разный набор символов + разное количество символов, но всегда заканчивается на #

ice_daemon ()
Ответ на: комментарий от ice_daemon

я вот не понимаю, почему сразу не описать задание полностью?

grep -e 'link=[0-9]\+#'

anonymous ()
Ответ на: комментарий от anonymous

Спасибо, а если еще буквы добавить то так получится grep -e 'link=[a-z0-9]\+#' filename

ice_daemon ()
Ответ на: комментарий от ice_daemon

оставляет полностью все строки где есть «link=...» а хотелось бы оставить не полностью строку, а только link=....

ice_daemon ()
sed -n '/link=/s/#$//p' your_file

Это если сторока заканчивается на #. Или

sed -n '/link=/s/#.*$//p' your_file

beastie ★★★★★ ()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

спасибо sed -n '/link=/s/#.*$//p' your_file

так почти получилось, но остались символы в строке перед link=... и в конце добавилась точка beastie может поможете довести до конца?

ice_daemon ()
Ответ на: комментарий от ice_daemon

получилось за 2 прохода

sed -n '/resume=/s/#.*$//p' your_file

sed 's#\(^\)\(.*\)\(resume=.*\)#\1\3#' your_file

ice_daemon ()
Ответ на: комментарий от ice_daemon

Можно и в один проход:

sed -n '/resume=/s/^.*\(resume=[^#]*\)#.*$/\1/p'

beastie ★★★★★ ()
Ответ на: комментарий от beastie

спасибо большое, так гораздо лучше

но одна проблема вылезла, если запускать на win, команду надо писать в "", но если надо удалить все до символа ", при использовании такой команды

«sed.exe» -n «/resumeHash=/s/^.*\(resume=[^»]*\)".*$/\1/p" reslist.tmp > reslist.txt удаляет все, если заменить " на любой другой символ, то все работает, как сочетать «» начала команды и " как символ конца нужной строки?

ice_daemon ()
echo "link=141931341" > file.txt
anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.