У меня есть следующий пример файла:Отдельный текстовый файл с СЭД
evtlog.161202.002609.debugevtlog.161201.162408.debugevtlog.161202.011046.debugevtlog.161202.002809.debugevtlog.161201.160035.debugevtlog.161201.155140.debugevtlog.161201.232156.debugevtlog.161201.145017.debugevtlog.161201.154816.debug
Я хочу разделить строку и добавить новую строку после согласования «отладки», как это:
evtlog.161202.002609.debug
evtlog.161201.162408.debug
До сих пор Я попробовал почти все с sed, но, похоже, он не делает того, что я хочу.
sed 's/debug/{G}' latest_evtlogs.out
sed '/debug/i "SAD"' latest_evtlogs.out
и т.д ... sed 's/debug/\n/g' latest_evtlogs.out
не работает, когда я добавляю его в качестве трубы в сценарии, но это происходит, когда я запускаю его вручную.
Вот как я генерировать файл:
printf $(ls -l $EVTLOG_PATH/evtlog|tail -n 10|awk '{printf $8 , "%s\n\n"}'|sed 's/debug/\n/g') >> latest_evtlogs.out
Сначала я хотел просто добавить строку с AWK, но он не работает. Любые идеи, почему я не могу выделить строку с помощью новой строки?
Я использую:
Distributor ID: Debian
Description: Debian GNU/Linux 5.0.10 (lenny)
Release: 5.0.10
Codename: lenny
Уверены ли вы, что вы не много обрабатываете, вам не нужно? Вы используете 'ls -l' для получения полного списка каталога, а затем с помощью Awk извлекаете только имя файла и печатаете его без новой строки, а затем пытаетесь добавить новые строки. Почему нет более простого «скрипта» 'ls $ EVTLOG_PATH/evtlog | tail -n 10 >> last_evtlogs.out' делать то, что вы хотите? –
@ K.A Buhr, я попробовал, и он снова возвращает одну строку. –
Команда 'awk', которая была использована для генерации выходного файла, неверна. Строка формата должна быть первым параметром: 'awk '{printf"% s \ n \ n ", $ 8}''. Просить. А. Бур предположил, что лучше использовать 'ls' вместо' ls -l', потому что тогда не будет необходимости использовать 'awk'. – pjh