У меня есть файл как
0::question#1::
Love
giberrish fdfd
1::anything#2:
Is
repeat
22::anything#3::
Lie
Я хочу извлечь
Love
giberish
****
Is
repeat
****
Lie
cat file.txt | sed 's/::\n([^\n]*)/\1/g'
Я получаю файл как
0::question#1::
Love
1::anything#2:
Is
22::anything#3::
Lie
При тестировании regex соответствует здесь https://regex101.com/
ОБНОВИТЕ я отсутствовал, чтобы сказать, что извлечение файла для для мультилинии не одна строка, и также я хочу deliminator также. Я приношу извинения за проблему
cat org_op.2019.04.06-09.43.59 | sed 's/^.*::.*//g;/^$/d'
Я произвожусь как
Love
giberrish fdfd
Is
repeat 2 4 4
Lie
Таким образом, я добавил некоторых deliminator
для разделения одной записи от другого
cat org_op.2019.04.06-09.43.59 | sed 's/^.*::.*/***/g;/^$/d'
и добрался
***
Love
giberrish fdfd
***
Is
repeat 2 4 4
***
Lie
Для удаления известный, я использовал
cat org_op.2019.04.06-09.43.59 | sed 's/^.*::.*/ ***/g;/^$/d' | tail -n +2
новый вывод
Love
giberrish fdfd
***
Is
repeat 2 4 4
***
Lie
Я хочу получить каждое рекордное использование awk
я сделал
cat org_op.2019.04.06-09.43.59 | sed 's/^.*::.*/ ***/g;/^$/d' | tail -n +2 | awk 'BEGIN{ RS = "" ; FS = "***" }{print $1}'
Я произвожусь
Love
giberrish fdfd
Я не могу удалить последнюю пустую строку, которая является тем же через все поля, с которыми я пытался использовать канал для sed /^$/d
не работал
ОБНОВИТЕ 2, получил его работающий
''sed 's/^.::.//g;/^ $/d' | хвост-n +2 | awk 'НАЧИНАЮТ {RS = ""; FS = ""} {печатает 1$}' | sed-e '/^ $/d''
Используйте метод согласующих отрезков длинной линии затем remnove те согласующие отрезки длинной линии и затем удалите пробелы...
sed -e '/^.*::.*/d' -e '/^$/d' data.txt
Результат:
Love
Is
Lie
Или более короткая версия:
sed -E '/^(.*::.*)?$/d'
Информация:
'/^.*::.*/d'
: Строки соответствия с ::
и удалите их'/^$/d'
: Удалите все пустые строкиsed '/^[0-9]/d; /^$/d' file.txt
Love
Is
Lie
/^[0-9]/d
: удалите строки, запускающиеся с числа/^$/d
: удалите пустые строки