Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы (2 семестр).docx
Скачиваний:
3
Добавлен:
12.11.2019
Размер:
193.38 Кб
Скачать

Завдання 1, варіант 2

Перший символ кожного рядка замінити на перший символ наступного рядка. Останній рядок залишається без змін.

Розв'язок:

pr -n' ' -T Hum-Dum.txt |  

Вивід з нумерацією рядків.

cut -c7 |  

Виділення 1-го символу.

sed -n '2,$p' >temp01  

Видалення 1-й рядка, символ з неї нікуди не підставляється.1-е символи рядків зберігаються в тимчасовому файлі.

pr -n' ' -T Hum-Dum.txt |  

Вивід з нумерацією рядків.

sed -n 's/[ ]*//p' |  

Видалення головних пробілів.

cut -f1 -d' ' |  

Вивід тільки стовпця номерів.

paste -d' ' - temp01 |  

Зчеплення номера рядка (вхідний потік) з 1-м символом наступного рядка (тимчасовий файл). Виходить, наприклад: '3 H'.

sed '$d' |  

Видалення останнього рядка - у неї нічого не підставляється.

sed -n 's/ /s\/\\.\//p' |  

Заміна пробілу між номером і символом на службові символи. Виходить: '3s/./H'.

sed -n 's/$/\//p' >temp01  

Додавання службових символів у кінець рядка. Виходить: '3s/./H/' - команда sed на зміну 1-го символу рядка. ( Зверніть увагу: ця команда не закінчується прапором 'p'.) Команди зберігаються в тимчасовому файлі.

sed -f temp01 Hum-Dum.txt >result  

Тимчасовий файл використовується як командний скрипт sed. ( Зверніть увагу: якби в командах скрипта не було б прапора 'p', а в даній команді не було б опції -n, не вивівся б останній рядок, для якого немає підстановки в скрипті). Результат зберігається.

rm -f temp*  

Видалення тимчасового файлу.

Протокол виконання:

Script started on Thu Sep 5 08:05:45 2002

bash2-2.05$ pr -n' ' -T Hum-Dum.txt |

> cut -c7 |

> sed -n '2,$p' >temp01

bash2-2.05$ pr -n' ' -T Hum-Dum.txt |

> sed -n 's/[ ]*//p' |

> cut -f1 -d' ' |

> paste -d' ' - temp01 |

> sed '$d' |

> sed -n 's/ /s\/\\.\//p' |

> sed -n 's/$/\//p' >temp01

bash2-2.05$ sed -f temp01 Hum-Dum.txt >result

bash2-2.05$ rm -f temp*

bash2-2.05$ cat result

Sumpty-Dumpty

Het on the wall.

Humpty-Dumpty

Aad a greate fall.

And all the king's horses,

Cnd all the king's man.

Can not Humpty,

Han not Dumpty,

Dumpty-Dumpty,

Sumpty-Humpty,

Aet on this wall

Again.

bash2-2.05$

Script done on Thu Sep 5 08:06:12 2002

Завдання 1, варіант 3

У передостанньому рядку, який закінчується крапкою, поміняти місцями перше слово з останнім.

Розв'язок:

sed -n '/\.$/=' Hum-Dum.txt |  

Вивід номерів усіх рядків, які закінчуються крапкою.

tail -2 |  

Вивід двох останні із цих номерів.

head -n1 > temp01  

Вивід першого із двох останніх номерів. Збереження в temp01.

sed -n 's/$/s\/ \.\*\/\/p/p' temp01 >temp02  

Формування команди sed на вивід 1-го слова рядка з номером, збереженим в temp01. Команда зберігається в temp02.

sed -n -f temp02 Hum-Dum.txt >temp03  

Виконання команди з temp02, запис 1-го слова в temp03.

sed -n 's/$/s\/\[\ \]\* \/\/gp/p' temp01 >temp02  

Формування команди sed на вивід останнього слова рядка з номером, збереженим в temp01. Команда зберігається в temp02.

sed -n -f temp02 Hum-Dum.txt >temp04  

Виконання команди з temp02, запис останнього слова в temp04.

paste -d' ' temp01 temp03 |  

Зчеплення через пробіл номера рядка й останнього слова рядка.

sed -n 's/ /s\/\ [\ \]\*$\/ /p' |  

Формування команди sed на заміну в рядку з номером, обраним з temp01, 1-го слова на текст, обраний з temp03.

sed -n 's/$/\//p' >temp03  

Завершення формування команди й збереження її в temp03.

paste -d' ' temp01 temp04 |  

Зчеплення через пробіл номера рядка й 1-го слова рядка.

sed -n 's/ /s\/\\[\ \]\* \//p' |  

Формування команди sed на заміну в рядку з номером, обраним з temp01, останнього слова на текст, обраний з temp04.

sed -n 's/$/ \//p' >temp04  

Завершення формування команди й збереження її в temp04.

sed -f temp03 Hum-Dum.txt |

Виконання для вихідного файлу команди з temp03.

sed -f temp04 >result  

Виконання для того, що вийшло, команди з temp04.

rm -f temp*  

Видалення тимчасових файлів.

Протокол виконання:

Script started on Thu Sep 5 08:10:13 2002

bash2-2.05$ sed -n '/\.$/=' Hum-Dum.txt |

> tail -2 |

> head -n1 > temp01

bash2-2.05$ sed -n 's/$/s\/ \.\*\/\/p/p' temp01 >temp02

bash2-2.05$ sed -n -f temp02 Hum-Dum.txt >temp03

bash2-2.05$ sed -n 's/$/s\/\[\ \]\* \/\/gp/p' temp01 >temp02

bash2-2.05$ sed -n -f temp02 Hum-Dum.txt >temp04

bash2-2.05$ paste -d' ' temp01 temp03 |

> sed -n 's/ /s\/\ [\ \]\*$\/ /p' |

> sed -n 's/$/\//p' >temp03

bash2-2.05$ paste -d' ' temp01 temp04 |

> sed -n 's/ /s\/\\[\ \]\* \//p' |

> sed -n 's/$/ \//p' >temp04

bash2-2.05$ sed -f temp03 Hum-Dum.txt |

> sed -f temp04 >result

> bash2-2.05$ rm -f temp*

bash2-2.05$ cat result

Humpty-Dumpty

Set on the wall.

Humpty-Dumpty

Had a greate fall.

And all the king's horses,

man. all the king's And

Can not Humpty,

Can not Dumpty,

Humpty-Dumpty,

Dumpty-Humpty,

Set on this wall

Again.

bash2-2.05$

Script done on Thu Sep 5 08:10:46 2002