2014-09-09 7 views
1

Я хочу сократить файл журнала в системе unix с очень ограниченной оболочкой. Мой предпочтительный способ сделать это будет с ed.expand shell variable in ed onliner

Удаление затруднительного количество строк работает отлично:

ed -s file.txt <<< $'1,4d\nwq' 

Но как я могу расширить количество строк, чтобы удалить из переменной оболочки в ed Oneliner? Я ищу что-то вроде:

n_del=4; ed -s file.txt <<< $'1,\${n_del}d\nwq' 

ответ

3

Хотя это совершенно нормально в оболочке просто конкатенации строк в кавычках по-разному и даже не цитируемый, так что он может выглядеть так:

$ n_del=4; ed -s test <<< "1,${n_del}"d$'\n'wq 

Я считаю, , здесь-doc был бы более чистым, чем однострочный:

$ n_del=4 
$ ed -s test <<_EOF 
1,${n_del}d 
wq 
_EOF 
+1

'ed' имел обыкновение иметь ограничения на размер файлов, которые он может обрабатывать. Возможно, это исправлено сейчас. Если проблема, O.P. может захотеть переключиться на использование ex. Всем удачи. – shellter