Результат командної консолі як вхідний файл для sed або інших команд


0

Деякі команди приймають файл як вхід, чи є спосіб розглянути результат команди як файл?

наприклад, я хочу отримати рядок між 2 рядками:

sed -n "/START-WORD-HERE/,/END-WORD-HERE/p" input

але я хочу використовувати команду, яка генерує багато тексту як вхід, наприклад, 'cat somefile'. Я намагався замінити введення на $ (cat somefile), але sed повернув помилку для кожного слова, поверненого командою cat ...


Відповіді:


0

Так, і це саме ядро ​​філософії Linux "Багато маленьких інструментів для збільшення масштабного процесу"

Linux використовує те, що називається трубами командного рядка.

Щоб їх використовувати, ви просто з'єднайте дві команди разом, використовуючи символ вертикальної смуги

|

Отже, у вашому випадку ви сказали, що хочете відправити вихід команди cat в команду sed, ви можете зробити це наступним чином

cat somefile | sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"

Зауважте, що в цьому випадку ви більше НЕ вказуєте ім'я файлу після команди.

99% усіх команд Linux дозволить вам працювати за допомогою труб, але обов'язково прочитайте довідні сторінки для деяких з них, оскільки деякі з них вимагають, щоб ви все-таки вказали ім’я файлу, з яким потрібно працювати, але зазвичай вам скажуть використовувати a

-

(Мінус символу)

Замість імені файлу.

Також пам’ятайте, що в більшості випадків труба є лінійною, вихід якої з одного кінця утворює вхід другого, здійснюючи будь-які перетворення, виконані вздовж ланцюга.

Це означає, наприклад, якщо ви

cat somefile | grep someword | sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"

Вхід до sed буде лише результатом будь-яких операцій, які виконують греп на вході від cat.

Завжди найкраще спершу тестувати / експериментувати з копією файлу, поки ви не дізнаєтесь, що все правильно виправлено, і не бійтеся розробляти речі покроково.

отримати

cat blah | grep bleah

біт правильно, перш ніж додати sed bit bit. Тоді отримайте біт sed безпосередньо перед додаванням awk / wc / що б там не було, перегляд результату крок за часом дозволить вам налагоджувати та перевіряти вашу трубу під час руху.

Існує багато команд, які виконують дуже багато різних робіт, і це чудова привід провести вечір, читаючи сторінки посібників з інструментального інструменту командного рядка Linux. Є інструменти для вирізання стовпців із файлів, перетворення текстових документів у текст, підрахунку рядків та багато іншого.

а потім, коли вам це набридло, ось посилання на статтю, яку я давно написав для PHP Builder, показуючи, як писати власні трубопровідні процесори в PHP.

http://www.phpbuilder.com/column/peter_shaw20090211.php3

Перш за все весело, ви можете зробити дивовижні речі з досить невеликою кількістю інструментів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.