Bash 使用通配符作为参数的命令
Bash Command using wildcard as an argument
x=rankings* && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
这是一个无论使用何种方法我都无法开始工作的命令,而且我在 10 次以上的堆栈溢出搜索中找不到任何东西。
有没有办法将通配符作为参数提供给单行命令?我想根据目录中的现有文件制作一个文件列表。
我得到的最接近的是
x=rankingsX.Y.Z && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
其中 X Y Z 是一些数字,但是这个 单独硬编码与我的 objective 相反 - 一个单行命令(不是脚本文件)搜索和使用原始名称将特定文本输出到文件中。
一个重定向一次只有一个目的地;因此,尝试重定向到一个表达式,该表达式在字符串拆分和全局扩展时会产生多个文件名,从而导致 "bad redirection" 错误。
你想要的是 x
一次有一个值,对于 glob 匹配的每个值——也就是说这是一个 for
循环的工作。
for x in rankings*; do grep -A10 -P '^Ranked :$' "$x" | tail -n +2 >"results$x"; done
...也可以写在多行上(即使是交互式 shell),如:
for x in rankings*; do
grep -A10 -P '^Ranked :$' "$x" | tail -n +2 >"results$x"
done
x=rankings* && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
这是一个无论使用何种方法我都无法开始工作的命令,而且我在 10 次以上的堆栈溢出搜索中找不到任何东西。
有没有办法将通配符作为参数提供给单行命令?我想根据目录中的现有文件制作一个文件列表。
我得到的最接近的是
x=rankingsX.Y.Z && grep -A10 -P '^Ranked :$' $x | tail -n +2 > results$x
其中 X Y Z 是一些数字,但是这个 单独硬编码与我的 objective 相反 - 一个单行命令(不是脚本文件)搜索和使用原始名称将特定文本输出到文件中。
一个重定向一次只有一个目的地;因此,尝试重定向到一个表达式,该表达式在字符串拆分和全局扩展时会产生多个文件名,从而导致 "bad redirection" 错误。
你想要的是 x
一次有一个值,对于 glob 匹配的每个值——也就是说这是一个 for
循环的工作。
for x in rankings*; do grep -A10 -P '^Ranked :$' "$x" | tail -n +2 >"results$x"; done
...也可以写在多行上(即使是交互式 shell),如:
for x in rankings*; do
grep -A10 -P '^Ranked :$' "$x" | tail -n +2 >"results$x"
done