如何将命令结果传递给 - <character> <argument>选项? (没有空格)</argument> </character>

时间:2009-05-22 19:28:44

标签: bash command pipe head

我有这组管道命令:

grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'

它告诉我前一行它首先找到星号。 现在我想让之前的行管道:

head -n<that previous line number>

Head需要紧跟-n参数后面的数字,不带空格,例如:

head -n4

我该怎么做?它只是不接受添加

| head -n

在命令集的末尾。 我的搜索没有结果。谢谢!

3 个答案:

答案 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