Выполнить строку после вырезать в терминале - PullRequest
0 голосов
/ 10 мая 2018

У меня есть файл с именем test.txt, содержимое которого:

ID = "1002" Name = "gltestDmesg": Command = "dmesg":

Я хочу запустить такую ​​команду:

cat test.txt | rev | cut -d'"' -f2 | rev | execute

Вместо execute должна быть такая команда, которая заставит dmesg работать в терминале. Вместо dmesg это может быть любая команда, которая может быть запущена на терминале. Я пробовал xargs как:

cat test.txt | rev | cut -d'"' -f2 | rev | xargs

но он выдает dmesg как вывод, потому что программа по умолчанию в xargs имеет значение echo .

Я попытался выполнить поиск по нескольким ссылкам, но все говорят о работе со строками, используя cut или sed, но без выполнения после этого. Но я узнал о xargs, но это тоже не работает.

Пожалуйста, прокомментируйте также, если я что-то пропустил.

Спасибо!

Edit1 : в test.txt может быть несколько строк с похожим синтаксисом, поэтому вместо cat я могу также выполнить grep.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Следующие могут помочь вам в том же.

awk -F"\"" '{print $(NF-1)}' Input_file | sh

Решение 2-е: Использование функции system в awk также может помочь нам в этом.

awk -F"\"" '{system($(NF-1))}'  Input_file

РЕДАКТИРОВАТЬ: Для передачи нескольких файлов в awk вы можете использовать, например, например -> для .txt файлов *.txt вместо Input_file выше. Или, если у вас есть несколько файлов, вы можете сделать как Input_file1 Input_file2 ....

0 голосов
/ 10 мая 2018

Вы можете просто использовать вывод как команду:

$(rev test.txt | cut -d'"' -f2 | rev)

Старая форма для этого (все еще работает, но вы не можете вложить ее):

`rev test.txt | cut -d'"' -f2 | rev`

В качестве альтернативы, если вам нужно передать это, должно работать следующее:

rev test.txt | cut -d'"' -f2 | rev | sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...