我有这组管道命令:
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'
它告诉我前一行它首先找到星号。 现在我想让之前的行管道:
head -n<that previous line number>
Head需要紧跟-n参数后面的数字,不带空格,例如:
head -n4
我该怎么做?它只是不接受添加
| head -n
在命令集的末尾。 我的搜索没有结果。谢谢!
答案 0 :(得分:4)
您希望使用反向标记替换值:
head -n`grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'` file.txt
或者可能在多行上类似:
LINENO=`grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'`
head -n${LINENO} file.txt
答案 1 :(得分:2)
你为什么不这样做:
awk -- '{if (!/*/) print $0; else exit}' file.txt
或者这个,速度更快:
awk -- '/*/ {exit}; {print}' file.txt
答案 2 :(得分:1)
我认为你也可以使用xargs。类似的东西:
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}' | xargs -I % head -n% file.txt