Intereting Posts
Несоответствия между перенаправлением ввода из файла, здесь docs и здесь строки Debian – использование TFTP в сценарии bash Установка ширины вкладки на выходе C ++ в bash понимание безопасного запуска скрипта как ограниченного пользователя Короткая простая команда для создания группы, если она еще не существует? Как создать нового пользователя, но с уже существующим домашним каталогом? Приложения Ubuntu Linux работают на Kali Linux? Полностью вывести команду буфера перед тем, как подключиться к другой команде? Измените цвет вывода tcsh для любой команды Как убить все процессы, не имеющие определенного родительского процесса? Sed удалить строку, если n-й символ не является конкретным символом удалите строки с sed, которые следуют определенной строке Какой файл определяет записи «# Регистры:» в /home/ubuntu/.viminfo после перезапуска apache2 Предотвращение разрывов в середине слова в a2ps Изменение маршрутов для VPN

bash с использованием имени файла в качестве входного

Я хотел бы

hg resolve -l 

который находится в формате

 R somefile/filename U somefile/filename R somefile/filename U somefile/filename 

и иметь возможность использовать первую строку, начинающуюся с «U» в качестве аргумента, поэтому я мог бы делать такие вещи, как

 open -t <first U file> 

а также

 hg resolve -m <first U file> 

Было бы здорово, если бы кто-нибудь мог дать мне несколько указателей на лучший способ сделать это.

EDIT: решение из приведенных ниже ответов, простой скрипт.

 #!/bin/bash # Script that gets the first file from hg resolve | grep U and passes to default text editor first_u_file=$(hg resolve -l | grep -m1 '^U') first_u_file=${first_u_file#U } echo opening \'$first_u_file\' open -t "$first_u_file" 

С GNU grep вы можете попробовать это (непроверенное):

 first_u_file=$(hg resolve -l | grep -m1 '^U') first_u_file=${first_u_file#U } 

-mX сообщает grep о прекращении после печати X строк, 1 в этом случае. Конструкция $(...) похожа на backticks, она превращает вывод в строку. Вторая строка удаляет «U» с начала имени файла.

Более простое решение:

 u_file=$( hg resolve -l | awk '/^U/{print $2; exit}' ) 

hg resolve -l | egrep '^U.*' | head -n 1

выход – это первый файл U

использовать его в качестве open аргумента с «U»:

 firstUfile=`hg resolve -l | egrep '^U.*' | head -n 1 | sed -e 's/^U\s+\(.*\)$/"\1"/'` open -t $firstUfile 

Вместо того, чтобы просто открыть первый файл, ваш скрипт мог бы перебирать все неразрешенные файлы:

 #!/bin/bash while read; do file="${REPLY#U }" echo "Opening '$file'" open -t "$file" hg resolve -m "$file" done <( hg resolve -l | grep "^U" ) 

(Я не знаком с hg : hg resolve -aln дает вам список hg resolve -aln файлов без префикса «U»? Это hg resolve -aln вас от необходимости выполнения команды grep и U-stripping.)