Shell Script - Скопіюйте текст з одного файлу в інший
Проблема
Мені потрібно скопіювати текст між початковим і кінцевим шаблоном з одного файлу в інший.
Наприклад,
Припустимо, у мене є файл із таким вмістом:
привіт world1 привіт world2 привіт world3 привіт world4 привіт world5 звуковий сигнал
Мені потрібен скрипт оболонки, який може створити такий файл:
привіт world2 привіт world3 привіт world4 привіт world5 звуковий сигнал
Я не знаю номерів рядків для діапазону, який я хочу скопіювати, я просто хочу скопіювати з появи "hello world2" на випадок "hello world5" + 1 рядок
У випадку, якщо вам цікаво, що я намагаюся зробити тут, я хочу, щоб запустити потоку дамп на моїй машині, використовуючи убийство -3, але вихід цього йде на стандартний висновок, який в моєму випадку спрямований на файл jboss, який має багато інших журналів у ньому. Тому я хочу запустити цей скрипт, щоб витягти звалища потоків у окремий файл після того, як було виконано вбивство. Зрозуміло, у файлі jboss.out може бути більше одного дампа потоків.
Рішення
Найпростіший спосіб, якщо ваш вхідний файл знаходиться на /folder/somefile.txt,
# Script lines.txt # Читання вхідного файлу в рядкову змінну. var str введення; cat "/folder/somefile.txt"> $ input # Видалити все перед "hello world2". stex "] ^ hello world2 ^" $ input> null # Видалити все після "hello world5n". stex "^ hello world5n ^ [" $ input> null # $ введення тепер має тільки бажану частину. Надрукуйте його. echo $ input
Скрипт знаходиться в бітерписі (//www.biterscripting.com). Щоб спробувати, збережіть скрипт як /Scripts/lines.txt, почніть бітершипінг і введіть наступну команду.
скрипт lines.txt
Скрипт також може бути викликаний безпосередньо з іншої програми, або іншої оболонки, як,
/biterScripting/biterScripting.exe lines.txt
Переконайтеся, що замість /folder/somefile.txt використовується правильне розташування файлу. Зверніть увагу на подвійні лапки ^, [і] в синтаксисі команди екстрактора рядків. Не соромтеся перекладати сценарій на будь-яку іншу мову.
Примітка
Завдяки SenHu за цей відгук на форумі.