Как получить конкретную строку из вывода и сохранить ее в одной переменной?

Если у вас есть perl переименовать (иногда его называют prename ), вы можете сделать это:

( cd Project && rename 's!(.+)/(.+)(\.mp3)!$1.$3!' */audio.mp3 )

Это берет каждое имя файла, соответствующее оболочке glob * / audio.mp3 , и разбивает его на каталог, имя файла и компоненты расширения. Затем он отбрасывает часть имени файла и переименовывает файл.

Используйте переименовать -n ... , чтобы увидеть, что произойдет, или используйте -v вместо -n , чтобы наблюдать, как это происходит во время выполнения.

0
14.10.2018, 12:11
3 ответа

Ваша команда действительно работает так, как ожидалось; вы просите sed вернуть строки 4 и 5 из файла «2input1output». Как видите, позиционные аргументы (, то есть $1, $2 и $3 ), возвращаются, потому что это то, что есть в скрипте.

Что вам нужно сделать, так это сначала запустить сценарий, чтобы получить желаемый вывод (STDOUT ), а затем передать его в потоковый редактор (sed ). Итак, одним нажатием сохранить нужный контент в переменную:

$ MESSAGE=$(./2input1output Jojo Ar Dublin | sed -n 4,5p)

Помните, что если вам нужно сохранить символы новой строки при доступе к переменной, сначала заключите ее в двойные кавычки.

2
28.01.2020, 02:31

Мы также можем сделать это нижеприведенным методом, используя awk

MESSAGE=`sh 2input1output Jojo Ar Dublin| awk 'NR >3 && NR<=5 {print $0}'
0
28.01.2020, 02:31

Я думаю, что sed получит пятую строку из вашего скрипта. вы можете отправить вывод в другой файл, а затем sed строки, которые вы хотите оттуда, или в вашем bash сохранить вывод в переменную, а затем grep нужные строки.

0
28.01.2020, 02:31

Теги

Похожие вопросы