2015-02-25 2 views
0

У меня есть список файлов в текстовом файле abc.txt. Мне нужно прочитать n-ю строку из файла и открыть файл с помощью vim. Я сделал это, но файл на п-й линии не открывается: -Открыть файл с помощью vim из вывода команды pipe

sed -n 4p abc.txt | vim -

Попытка получить 4-ю строку из abc.txt и открытий его с помощью Vim. На выходе я получаю содержание файла в том, что частности номер строки: - enter image description here

ответ

3

правая команда будет выглядеть так:

vim "$(sed -n 4p abc.txt)" 

разница в том, что это проходит outpu t sed как первый аргумент vim. В результате Vim откроет этот файл.

В команде, которую вы набрали, вывод sed передан на стандартный вход vim. Поскольку вы передаете «-» в качестве аргумента Vim, он предполагает, что текст для редактирования - это то, что происходит через стандартный ввод. Этот текст является именем файла, но не содержимым файла.

+0

Неверное имя переменной. – Newbie

+2

Похоже, у вас есть более старая версия Bash или вы используете другую оболочку. $ (...) - это новая улучшенная версия backticks (\ '... \'), но некоторые оболочки не поддерживают ее. Как вы правильно поняли, использование backticks работает на вашей оболочке. – srvsh

+0

Не относится к делу OP, но для тех, кто хочет открыть сразу несколько файлов: 'vim -p '$ (ваша команда)" 'открывает каждый файл на новой вкладке vim: http: // vim. wikia.com/wiki/Using_tab_pages – alexanderbird

0

Да, я понял. Данная команда является

vim `sed -n 4p abc.txt` 
Смежные вопросы