«Случай — это псевдоним Бога, когда Он не хочет подписываться своим собственным именем.» А. Франс

Спец курс (Автоматизация процесса проектирования)/Практические задания 3 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Перед выполнение ознакомиться с правилами оформления задания)
 
(не показаны 7 промежуточных версий 2 участников)
Строка 3: Строка 3:
 
* [[Спец курс (Автоматизация процесса проектирования)/Практические задания (Пример)]]
 
* [[Спец курс (Автоматизация процесса проектирования)/Практические задания (Пример)]]
  
Файл для задач.
+
== Задания по SED ==
 +
Задание будет успешно выполнено, если были использованы конструкции языка bash и редактор sed (не допускается использовать другие утилиты кроме SED, допускается помогать при обработке из bash).  
  
=== Разворот байт ===
+
# Двойное пространство между строками между каждой второй строкой
Строки с пометкой "(D)" включают данные - четыре DWord (двойное слово - 32 бит).
+
# Тройное пространство между строками исключая пустые строки (на выходе содержатся не больше одной пустой строки между двумя строками с текстом)  
  0 (D) 80000d00 02000000 00000000 00000000
+
# Десятерное пространство между каждой 2-ой строкой
Задача развернуть байты в какждом DWord, как показано ниже
+
# Удалить каждую пятую строку
0 (D) 000d0080 00000002 00000000 00000000
+
# Вставить пустую строку и строку с первым символом # перед каждой строкой соответствующей регулярному выражению "regex"
В файле есть строки с "", в которых уже проведено данное преобразование, поэтому их не следует изменять.
+
# Вставить строку с символом /* после каждой строки соответствующей регулярному выражению "begin"
 
+
# Вставить строку с символом */ после каждой строки соответствующей регулярному выражению "end"
=== Анализ команды ===
+
# Нумерация каждой 4 строки в файле filename. Используя отступ для отделения номера от строки  
 
+
# Нумерация каждой строки в файле filename (номер слева максимум 9-значный, выравненный по правому краю)  
Найти в логе данные, которые задают команду и расшифровать её, записав в строке после данных имена и значения полей команды.
+
# Нумерация каждой строки в файле filename, с выводом номера только для не пустых строк и каждой с номером кратным 3
 
+
# Подсчет строк (эмуляция "wc -l") в файле содержащих выражение "begin"
Пакет данных относящийся к команде имеет размер 64 байта, в заголовке пакета должно быть '''BC:0064'''. После строки заголовка следует 4 строки с данными, где в первом столбце - номер DWord`а данных пакета, второй столбец - маркер данных "(D)".
+
# Удалить все пробелы и символы табуляции в начале каждой строки файла
<small>test_top    203865.00 203869.00 R MRd32      0x0100/01  355  0 0    0 0 0          0x40008080  f f    16 (H) 00008010 010001ff 40008080  ----    0x3191b2b4  0xf87188a                                           
+
# Удалить все пробелы и символы табуляции в конце каждой строки файла
test_top    203897.00 203917.00 T CplD      0x0100/01  182  0 0    0 0 0  ID:0xffff Stat:SC  '''BC:0064'''  16 (H) 4a008010 ffff0040 01000100  ----  0 0xa94d0d83 0x37e1b7df                                           
+
# Удалить все пробелы и символы табуляции в начале и конце каждой строки файла
                                                                                                          0 (D) 01000400 02000000 00000000 00000000                                                                   
+
# Удалить все повторяющиеся пробелы и символы табуляции в начале и конце и в средине каждой строки файла
                                                                                                          4 (D) 00000000 00000000 00900140 00000000                                                                   
+
# Вставить 3 табуляции в начале каждой строки (создать смещение страницы)
                                                                                                          8 (D) 00c00140 00000000 0a000000 00000000                                                                   
+
# Расположить весь текст по правому краю столбца шириной в 80 символов
                                                                                                          12 (D) 01000000 00000000 00000000 00000000                                                                   
+
# Центрировать весь текст посередине столбца шириной 108 символов.  
</small>
+
# Поиск и замена "Hi\bro" на "Yo\bro" в каждой строке
 
+
# Поиск и замена "Hi\bro" на "Yo\bro" (замена только первого совпадения в строке)  
Данные в логе записываются слева направо - с младшего адреса. В приведённом примере байт 0 нулевого DWord`а равень 01, второй байт - 00, третий 04, четвертый байт - 00 и т.д.
+
# Поиск и замена "Hi\bro" на "Yo\bro" (замена первых 4рех совпадений в строке)  
 
+
# Поиск и замена "Hi\bro" на "Yo\bro" (замена ВСЕХ совпадений в строке)  
Расшифровка команды в [http://www.nvmexpress.org/wp-content/uploads/NVM-Express-1_1.pdf спецификации]
+
# Поиск и замена "Hi\bro" на "Yo\bro" (замена предпоследнего совпадения)  
 
+
# Поиск и замена "Hi\bro" на "Yo\bro" (замена только последнего совпадения)  
* Figure 10: Command Dword 0
+
# Замена "Hi\bro" на "Yo\bro" ТОЛЬКО для строк содержащих "Black"
* Figure 11: Command Dword 0-15: Command Format – Admin Command Set
+
# Замена "Hi\bro" на "Yo\bro" ИСКЛЮЧАЯ строки содержащие "Black"
 
+
# Замена "scarlet" или "ruby", или "puce" на "red", или "back" на "white"
<!-- {|class=standard
+
# Перевернуть последовательность строк (эмуляция "tac")  
|Bit
+
# Перевернуть каждую строку в файле задом наперед
|Field name
+
# Перевернуть каждую слово в файле задом наперед
|-
+
# Соединить каждую две (пару) строк бок о бок
| 31:16
+
# Если линия заканчивается обратной косой чертой "\", то присоединить следующую линию
| Command  Identifier  (CID):
+
# Если линия начинается с знака "==", то присоединить ее к предыдущей линии и заменить "==" пробелом
|-
+
# Добавить запятые к строке из чисел, изменяя "1234567" на "1,234,567"
| 15
+
# Добавить символы подчеркивания к строке из чисел, изменяя "ААААFFFFВВВВ1234" на "64'hАААА_FFFF_ВВВВ_1234"
| PRP or SGL for Data Transfer (PSDT): ‘0’ - PRP, ‘1’ - SGL
+
# Добавить запятые к числу с десятичной частью и знаком минуса 
|-
+
# Добавить две пустые строки через каждые 5 строк (после строк 5, 10, 15, 20, и т.д.)
| 14:10 | Reserved
+
# Печатать первые 10 линий файла
|-
+
# Печатать первые 30-100 линий файла
| 09:08 | Fused  Operation  (FUSE)
+
# Печатать первую строку файла
{|
+
# Печатать последние 20 строк файла
| Bits | Definition
+
# Печатать последние 30 строк файла кроме последних 5 строки с конца файла
|-
+
# Печатать последнюю строку файла
| 00b |Normal operation
+
# Печатать предпоследнюю строку в файле
|-
+
# Печатать только те строки, которые совпадают с регулярным выражением
|01b | Fused operation, first command
+
# Печатать только те строки, которые НЕ совпадают с регулярным выражением
|-
+
# Печатать 3 строк непосредственно перед регулярным выражением, но не печатать строку содержащую регулярное выражение
| 10b | Fused opera tion, second command
+
# Печатать 5 строк непосредственно после регулярного выражения, но не печатать строку содержащую регулярное выражение
|-
+
# Печатать по две строки перед и после регулярного выражения, с указанием номера строки совпадающей с регулярным выражением (симуляция "grep -A1 -B1")
| 11b | Reserved
+
# Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в любой последовательности)
|}
+
# Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в конкретной последовательности)  
|-
+
# Печать строк, совпадающих с любым регулярным выражением AAA или BBB, или CCC
| 07:00 | Opcode (OPC)
+
# Печатать абзац если он содержит AAA (пустая строка разделяет абзацы)
|}
+
# Печатать абзац если он содержит AAA, BBB и CCC (в любой последовательности) (символ табуляции вначале строки абзацы)
-->
+
# Печатать абзац если он содержит AAA или BBB, или CCC
 +
# Печатать строки длиной равной или большей 16 символов
 +
# Печатать строки длиной меньше или равной 35 символов
 +
# Печатать часть файла начиная от совпадения с регулярным выражением и до конца файла
 +
# Печатать часть файла основываясь на номерах строк (строки 4-19, включительно)
 +
# Печатать строку под номером 52
 +
# Начиная с 3-ей строки печатать каждую седьмую строку в файле
 +
# Печатать часть файла между двумя регулярными выражениями (включительно)  
 +
# Печатать все линии ИСКЛЮЧАЯ часть между двумя регулярными выражениями
 +
# Удалить дубликаты последовательных строк в файле. Первая строка в наборе дубликатах строк удерживается от удаления
 +
# Удалить дубликаты непоследовательных строк в файле. Остерегайтесь переполнения буфера или используйте GNU sed
 +
# Печатать только дубликаты строк
 +
# Удалить первые 10 строк в файле и одну последнюю
 +
# Удалить последнюю строку в файле
 +
# Удалить 3 последние строки файла
 +
# Удалить последние 4 строки файла
 +
# Удалить каждую вторую строку в файле
 +
# Удалить каждую вторую строки совпадающие с регулярным выражением
 +
# Удалить ВСЕ пустые строки из файла
 +
# Удалить все последовательности пустых строк из файла исключая первую. Также удалить все пустые строки в начале и в конце файла (эмуляция "cat -s")  
 +
# Оставить последовательность пустых строк не более двух одновременно
 +
# Удалить все пустые строки в начале файла
 +
# Удалить все пустые строки в конце файла
 +
# Удалить последнюю непустую строку в каждом абзаце
 +
# Отсортировать абзацы файла в алфавитном порядке. Абзацы разделены символом табуляции.

Текущая версия на 03:58, 31 марта 2018

Лекции SCRIPT

Лекции

Практические задания
Тесты

Табель успеваемости

Экзамен

Доп. материалы

Перед выполнение ознакомиться с правилами оформления задания

Задания по SED

Задание будет успешно выполнено, если были использованы конструкции языка bash и редактор sed (не допускается использовать другие утилиты кроме SED, допускается помогать при обработке из bash).

  1. Двойное пространство между строками между каждой второй строкой
  2. Тройное пространство между строками исключая пустые строки (на выходе содержатся не больше одной пустой строки между двумя строками с текстом)
  3. Десятерное пространство между каждой 2-ой строкой
  4. Удалить каждую пятую строку
  5. Вставить пустую строку и строку с первым символом # перед каждой строкой соответствующей регулярному выражению "regex"
  6. Вставить строку с символом /* после каждой строки соответствующей регулярному выражению "begin"
  7. Вставить строку с символом */ после каждой строки соответствующей регулярному выражению "end"
  8. Нумерация каждой 4 строки в файле filename. Используя отступ для отделения номера от строки
  9. Нумерация каждой строки в файле filename (номер слева максимум 9-значный, выравненный по правому краю)
  10. Нумерация каждой строки в файле filename, с выводом номера только для не пустых строк и каждой с номером кратным 3
  11. Подсчет строк (эмуляция "wc -l") в файле содержащих выражение "begin"
  12. Удалить все пробелы и символы табуляции в начале каждой строки файла
  13. Удалить все пробелы и символы табуляции в конце каждой строки файла
  14. Удалить все пробелы и символы табуляции в начале и конце каждой строки файла
  15. Удалить все повторяющиеся пробелы и символы табуляции в начале и конце и в средине каждой строки файла
  16. Вставить 3 табуляции в начале каждой строки (создать смещение страницы)
  17. Расположить весь текст по правому краю столбца шириной в 80 символов
  18. Центрировать весь текст посередине столбца шириной 108 символов.
  19. Поиск и замена "Hi\bro" на "Yo\bro" в каждой строке
  20. Поиск и замена "Hi\bro" на "Yo\bro" (замена только первого совпадения в строке)
  21. Поиск и замена "Hi\bro" на "Yo\bro" (замена первых 4рех совпадений в строке)
  22. Поиск и замена "Hi\bro" на "Yo\bro" (замена ВСЕХ совпадений в строке)
  23. Поиск и замена "Hi\bro" на "Yo\bro" (замена предпоследнего совпадения)
  24. Поиск и замена "Hi\bro" на "Yo\bro" (замена только последнего совпадения)
  25. Замена "Hi\bro" на "Yo\bro" ТОЛЬКО для строк содержащих "Black"
  26. Замена "Hi\bro" на "Yo\bro" ИСКЛЮЧАЯ строки содержащие "Black"
  27. Замена "scarlet" или "ruby", или "puce" на "red", или "back" на "white"
  28. Перевернуть последовательность строк (эмуляция "tac")
  29. Перевернуть каждую строку в файле задом наперед
  30. Перевернуть каждую слово в файле задом наперед
  31. Соединить каждую две (пару) строк бок о бок
  32. Если линия заканчивается обратной косой чертой "\", то присоединить следующую линию
  33. Если линия начинается с знака "==", то присоединить ее к предыдущей линии и заменить "==" пробелом
  34. Добавить запятые к строке из чисел, изменяя "1234567" на "1,234,567"
  35. Добавить символы подчеркивания к строке из чисел, изменяя "ААААFFFFВВВВ1234" на "64'hАААА_FFFF_ВВВВ_1234"
  36. Добавить запятые к числу с десятичной частью и знаком минуса
  37. Добавить две пустые строки через каждые 5 строк (после строк 5, 10, 15, 20, и т.д.)
  38. Печатать первые 10 линий файла
  39. Печатать первые 30-100 линий файла
  40. Печатать первую строку файла
  41. Печатать последние 20 строк файла
  42. Печатать последние 30 строк файла кроме последних 5 строки с конца файла
  43. Печатать последнюю строку файла
  44. Печатать предпоследнюю строку в файле
  45. Печатать только те строки, которые совпадают с регулярным выражением
  46. Печатать только те строки, которые НЕ совпадают с регулярным выражением
  47. Печатать 3 строк непосредственно перед регулярным выражением, но не печатать строку содержащую регулярное выражение
  48. Печатать 5 строк непосредственно после регулярного выражения, но не печатать строку содержащую регулярное выражение
  49. Печатать по две строки перед и после регулярного выражения, с указанием номера строки совпадающей с регулярным выражением (симуляция "grep -A1 -B1")
  50. Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в любой последовательности)
  51. Печать строк, совпадающих с регулярными выражениями AAA, BBB и CCC одновременно (в конкретной последовательности)
  52. Печать строк, совпадающих с любым регулярным выражением AAA или BBB, или CCC
  53. Печатать абзац если он содержит AAA (пустая строка разделяет абзацы)
  54. Печатать абзац если он содержит AAA, BBB и CCC (в любой последовательности) (символ табуляции вначале строки абзацы)
  55. Печатать абзац если он содержит AAA или BBB, или CCC
  56. Печатать строки длиной равной или большей 16 символов
  57. Печатать строки длиной меньше или равной 35 символов
  58. Печатать часть файла начиная от совпадения с регулярным выражением и до конца файла
  59. Печатать часть файла основываясь на номерах строк (строки 4-19, включительно)
  60. Печатать строку под номером 52
  61. Начиная с 3-ей строки печатать каждую седьмую строку в файле
  62. Печатать часть файла между двумя регулярными выражениями (включительно)
  63. Печатать все линии ИСКЛЮЧАЯ часть между двумя регулярными выражениями
  64. Удалить дубликаты последовательных строк в файле. Первая строка в наборе дубликатах строк удерживается от удаления
  65. Удалить дубликаты непоследовательных строк в файле. Остерегайтесь переполнения буфера или используйте GNU sed
  66. Печатать только дубликаты строк
  67. Удалить первые 10 строк в файле и одну последнюю
  68. Удалить последнюю строку в файле
  69. Удалить 3 последние строки файла
  70. Удалить последние 4 строки файла
  71. Удалить каждую вторую строку в файле
  72. Удалить каждую вторую строки совпадающие с регулярным выражением
  73. Удалить ВСЕ пустые строки из файла
  74. Удалить все последовательности пустых строк из файла исключая первую. Также удалить все пустые строки в начале и в конце файла (эмуляция "cat -s")
  75. Оставить последовательность пустых строк не более двух одновременно
  76. Удалить все пустые строки в начале файла
  77. Удалить все пустые строки в конце файла
  78. Удалить последнюю непустую строку в каждом абзаце
  79. Отсортировать абзацы файла в алфавитном порядке. Абзацы разделены символом табуляции.