我有这组管道命令:
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}'
它告诉我它首先找到星号的前一行。现在我想将前面的几行管道传输到:
head -n<that previous line number>
Head 需要紧跟 -n 参数的数字,不带空格,例如:
head -n4
我怎样才能做到这一点?它只是不接受添加
| head -n
在命令集的末尾。我的搜索没有结果。谢谢!
您希望反引号替换该值:
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
你为什么不这样做:
awk -- '{if (!/*/) print $0; else exit}' file.txt
或者这个,更快:
awk -- '/*/ {exit}; {print}' file.txt
我认为您也可以使用 xargs。就像是:
grep -n '*' file.txt | head -n1 | awk -F\: '{print $1-1;}' | xargs -I % head -n% file.txt