![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Удалить строку в текстовом файле | Неистовый | UNIX для чайников Вопросы И Ответы | 6 | 12-16-2008 03:44 PM |
| Как удалить определенный текст, не открывая файл. | stevefox | Shell программирование и сценарии | 12 | 02-21-2008 01:24 PM |
| Удалите первую строку из любого текстового файла? | aungomarin | Shell программирование и сценарии | 5 | 05-16-2006 10:42 PM |
| Как удалить за текст в файле? | forevercalz | Shell программирование и сценарии | 5 | 01-08-2006 10:28 PM |
| удалить последнюю строку из текстового файла | hcclnoodles | Shell программирование и сценарии | 4 | 06-25-2002 10:52 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Перезаписать И исключить в текстовый файл
Дорогие Все,
Я текстовый файл так: Header Запись 1 Запись 2 ....... Запись N Хвост Эта строка кода: AWK '(если (NR \u003d\u003d 1) (головы \u003d substr ($ 0,1,300);) (последняя еще \u003d substr ($ 0,1,300);) END (printf "заголовок: 300%-прицеп:%-300 \ N ", начальник, в прошлом) 'имя_файла конвертированы Header и прицепов в одну линию, и в 300 символов each.The вывода только одна строка. Теперь я хотел бы переписать одну строку выше (Header + хвоста) на первой строке исходного файла (оригинальный заголовок) и удалить хвост ........ Я могу скопировать этот заголовок и хвост на новый файл, а затем добавить запись Записи с 1 по N на этот новый файл, но это вызовет слишком низкая производительность ........ так что я думаю, лучше обновить первую и последнюю строку в этом файле ........... ...... да, то каким образом я могу сделать это? то есть 1-модификации заголовка с новой строки т.е. (заголовок + трейлер) 2-опустить хвост в исходный файл (можно сократить с помощью хвоста -1 файла?) |
|
||||
|
|
|
||||
|
Сохранить выход из AWK в переменной, как Код:
New_head=$(awk '{ if ( NR == 1 ) { head=substr($0,1,300);} else { last = substr($0,1,300);}END{printf "Header is : %-300s Trailer is : %-300s\n", head, last}' filename )
И тогда вы можете сделать что-то вроде Код:
sed -e "1 c\ $New_head" -e '$d' filename |
|
||||
|
Спасибо ..... я старался кода, но SED Команда не работает должным образом, это дает результат:
SED: Команда искажен: 1 C \ заголовок: Headervalue ....... прицеп: Прицеп значения ..... Она не дает никаких изменений в файл, а. |
|
||||
|
любое счастье для меня, а?
|
|
||||
|
Там был другой нитью, как lorcan сказал, и это, по-видимому, представляет собой лишь продолжение вышеизложенного нить в новую должность. Пожалуйста, продолжайте опубликовать свой вопрос в одной и той же нити тем, что было бы легче держать, а не начинать новую нить к одному и тому же вопросу. Если предположить, что я понял ваши требования попробовать это, Код:
awk ' { if ( NR == 1 ) { head=$0 } else { last = $0 } arr[i++]=$0; }END{ printf "Header is : %s Trailer is : %s\n", head, last; for( x=0; x<i-1; x++) { print arr[x] } }' filename
Код:
Header is : header Trailer is : trailer header record 1 record 2 record 3 комбинированные заголовок и трейлер доступен следует, что заголовок имеется все записи отображаются Прицеп запись не отображается Если это не то, что вы просили, дайте нам знать
|
|
||||
|
хорошо, что это нормально, но я был просто обеспокоен количеством файлов, созданных ........ есть одна проблема, которую я получаю один дополнительный строки (пустая строка) в конце файла ....... .... почему это так, используя этот код:
AWK '(если (NR \u003d\u003d 1) (головы \u003d substr ($ 0,1,149);) (последняя еще \u003d substr ($ 0,1,149);) обр [I ++]\u003d$ 0;) END (printf "%-149s% -- 149s \ N ", начальник, в прошлом, ибо (X \u003d 1; х <i-1; x++) печати arr[x] () }'file1> file2 Когда я открываю file2, я получаю одну дополнительную строку .......? |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|