我想获取的输出
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>
如果有人能给我一些关于执行此操作的最佳方法的指示,那就太好了。
编辑:以下答案中的解决方案,一个简单的脚本。
#!/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"
答案1
使用 GNU grep,你可以尝试这个(未经测试):
first_u_file=$(hg resolve -l | grep -m1 '^U')
first_u_file=${first_u_file#U }
-mX
告诉grep
打印 X 行后停止,在本例中为 1。该$(...)
结构类似于反引号,它将输出转换为字符串。第二行删除文件名开头的“U”。
答案2
一个更简单的解决方案:
u_file=$( hg resolve -l | awk '/^U/{print $2; exit}' )
答案3
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
答案4
您的脚本不仅可以打开第一个文件,还可以迭代所有未解析的文件:
#!/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
为您提供没有“U”前缀的未解析文件列表?这将消除对 grep 和 U 剥离步骤的需要。)