Потоковий редактор sed, утилiта обробки даних awk

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші
Група:
ІБ – 44

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет Львівська політехніка  Звіт до лабораторної роботи № 3 на тему: “ Потоковий редактор sed, утилiта обробки даних awk ” Мета роботи познайомитися з призначенням та командами потокового текстового редактора sed; познайомитися з призначенням утилiти awk та мовою обробки шаблонiв утилiти awk; навчитися редагувати текстовi файли з допомогою потокового редактора sed та використовувати утилiту sed як фiльтр редагування файлiв; навчитися записувати шаблони утилiти awk та використовувати утилiту awk як фiльтр обробки даних. 1. Потоковий редактор SED. Sed працює таким чином: він читає зі стандартного вводу один рядок за один раз. Для кожної лінії, він виконує ряд команд редагування, після чого цей рядок записується в STDOUT. Приклад, що показує, як це працює ми використовуємо з командою sommand. S означає "замінити словами" або пошуку та заміни. Формат: s/regular-expression/replacement text/{flags} Ми не будемо обговорювати всі прапорці, але в даному випадку ми використовуємо прапорець G, що означає "замінити всі слова що співпали" >cat file I have three dogs and two cats >sed -e 's/dog/cat/g' -e 's/cat/elephant/g' file I have three elephants and two elephants > Так що ж трапилося? По-перше, СЕД прочитав рядок файлу і виконав: s/dog/cat/g який підготував наступний текст: I have three cats and two cats а потім друга команда провела зміни відредагованого рядка і в результаті: I have three elephants and two elephants По-перше, звичайний спосіб використання SED полягає в наступному: >sed -e 'command1' -e 'command2' -e 'command3' file >{shell command}|sed -e 'command1' -e 'command2' >sed -f sedscript.sed file >{shell command}|sed -f sedscript.sed так що SED може читати з файлу або STDIN, і команди можуть бути вказані у файлі або в командному рядку. Зверніть увагу на наступне: якщо команди будуть зчитані з файлу, то пробіли можуть бути фатальними, зокрема, це призведе до провалу без всякої видимої причини. Я рекомендую редагування SED скріптів іншими редакторами, наприклад, Vim, які можуть показати кінець рядка символів, що дозволяє "бачити" кінцеві пробіли в кінці рядка. Команда заміни Формат для команди заміни виглядає наступним чином: [address1[ ,address2]]s/pattern/replacement/[flags] Прапорці можуть бути будь-які з наступних: n заміна і-ого примірника шаблона «заміною» g замінити всі примірники шаблона «заміною» p записати інформацію в простір STDOUT, якщо успішне заміщення відбувається w file cтворити файл з простору, якщо файл успішного заміщення відбувається Якщо не вказані прапорці, перші співпадіння в рядку будуть замінені. Відзначимо, що ми майже завжди використовують команді з G прапорцем або без прапорців взагалі. Якщо адреса вказана, то заміна застосовується для рядка, що містить цю адресу. Адреса може бути регулярним виразом охопленим слешами ( / <регулярний вираз> / ) або номер рядка. $ Символ може бути використаний замість номера рядка для позначення останнього рядка. Якщо дві адреси дані через кому, то заміна поширюється на всі рядки між двома даними рядками, які відповідають шаблону. Це вимагає певних роз'яснень у випадку, коли обидві адреси будуть моделі, так як є деяка невизначеність тут. Точніше, заміна поширюється на всіх рядків з першого співпадіння address1 в першому співпадінні address2 і всі рядки з першого співпадіння address1 після першого співпадіння address2 на наступний співпадіння address1. Команда видалення Команда видалення дуже проста у синтаксисі, вона виглядає наступним чином: [address1[ , address2 ] ]d Ця команда видаляє зміст простору. Усі наступні команди будуть пропущені (зрештою, дуже мало можна зробити за допомогою порожнього простору. Example 1 >cat file http://www.foo.com/mypage.html >sed -e 's@http://www.foo.com@http://www.bar.net@' file http://www.bar.net/mypage.html Зауважте, що ми використовували інший роздільник @ для команди заміни. Sed дозволяє декілька роздільників для команди, включаючи % , ; : . Альтернативні роздільники добре підходять для заміни, які включають рядки, такі як імена, як це робить ваш СЕД код більш читабельним. Example 2 >cat file the black cat was chased by the brown dog >sed -e 's/black/white/g' file the white cat was chased by the brown dog Example 3 >cat file the black cat was chased by the brown dog. the black cat was not chased by the brown dog >sed -e '/not/s/black/white/g' file the black cat was chased by the brown dog. the white cat was not chased by the brown dog. Example 4 >cat file hello this text is wiped out Wiped out hello (also wiped out) WiPed out TOO! goodbye (1) This text is not deleted (2) neither is this ... ( goodbye ) (3) neither is this hello but this is and so is this and unless we find another g**dbye every line to the end of the file gets deleted >sed -e '/hello/,/goodbye/d' file (1) This text is not deleted (2) neither is this ... ( goodbye ) (3) neither is this Це показує, як працює при вирішенні дві адреси, що зазначені в моделі. СЕД вважає перший матч вираз "привіт", видалення кожного рядка зчитуються в просторі картини, поки не добереться до першої рядку після слова "до побачення". Вона не застосовується видалити команду більше адрес, поки не натикається на слова "привіт" ще раз. Оскільки вираз "до побачення", не на будь-який з наступних лінії, команду видалення застосовується щодо всіх інших лініях. Команда виходу Q команда дуже проста. Вона просто завершує роботу. Немає більше рядків, що зчитаються в структурі простору і програма завершується. 2. Команда AWK AWK команда поєднує в собі функції Grep і SED, що робить ЇЇ однією з найпотужніших команд Unix. Використання AWK, ви можете замінити словами з ліній введення файлу слів в шаблоні або виконати розрахунки на номери в межах файлу. (У разі, якщо вам цікаво, як AWK отримали такі незвичайні назви, це походить від прізвищ трьох програмістів, які винайшли алгоритм роботи AWK.) Щоб використовувати AWK, потрібно написати мініатюрну програму на C-подібній мові, яка буде перетворювати кожен рядок вхідного файлу. Ми зупинимося тільки на функції друку AWK, оскільки це найкорисніша та найменш заплутана функція AWK. Загальна форма команди AWK. awk <pattern> '{print <stuff>}' <file> У цьому випадку матеріал буде певне поєднати два тексти, спеціальні змінні, які представляють кожне слово в рядку введення і, можливо, математичне або оператора 2. Як AWK процесів кожного рядка вхідного файлу, кожне слово на лінії, призначені змінним з іменем "$ 1 (перше слово), $ 2 (друге слово), і так далі. (Змінна $ 0 містить весь рядок.) Давайте почнемо з файлу, words.data, який містить наступні рядки: nail hammer wood pedal foot car clown pie circus Тепер ми будемо використовувати функцію друку в AWK для підключення слова з кожного рядка в шаблон, наприклад: awk '{print "Hit the",$1,"with your",$2}' words.data Hit the nail with your hammer Hit the pedal with your foot Hit the clown with your pie Що деякі з даних у файл вводу числових, як і в grades.data файл показано тут: Rogers 87 100 95 Lambchop 66 89 76 Barney 12 36 27 You can perform calculations like this: awk '{print "Avg for",$1,"is",($2+$3+$4)/3}' grades.data Avg for Rogers is 94 Avg for Lambchop is 77 Avg for Barney is 25 До цих пір ми не вказана жодна цінність для шаблону у цих прикладах, але якщо ви хочете, щоб виключити рядки обробляються, ви можете ввести щось на зразок цього: awk /^clown/'{print "See the",$1,"at the",$3}' words.data See the clown at the circus Тут ми розповіли AWK розглядати тільки вхідні лінії, які починаються з клоуном. Відзначимо також, що немає простору між характером і друку специфікатором. Якщо ви розмістите там простір, AWK будуть думати, що вхідний файл "(друку і працювати не буде. Але все це тільки верхівка айсберга AWK - цілі книги були написані на цю команду. Якщо ви програміст, спробуйте команду AWK. Висновок: в даній лабораторній роботі я ознайомився з командами для редагування потокового тексту AWK та SED. Також вивчив основні команди та методи використання цих команд для редагування, пошуку та заміни тексту в текстових файлах.
Антиботан аватар за замовчуванням

20.02.2012 03:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!