我想问一下如何从bash文件的最后一部分获取第n个值(例如第7个)。
示例:
The quick brown fox jumps over the lazy dog.
通过以上这一行,我想得到的只有第7个值("棕色")。
答案 0 :(得分:2)
怎么样:
S="The quick brown fox jumps over the lazy dog."
echo $S | awk '{print $(NF-6)}'
答案 1 :(得分:1)
您可以使用数组/单词拆分来避免使用外部工具:
$ read -a temp <<< "The quick brown fox jumps over the lazy dog."
$ echo "${temp[${#temp[@]}-7]}"
brown
答案 2 :(得分:1)
使用tac
+ awk
的另一个选项:
$ cat infile
Query String: The quick brown
fox jumps over
the lazy dog.
$ tac infile |awk -v nword=7 '{for (i=NF;i>=1;i--){if(++a==nword){print $i;end}}}'
brown
tac
:将撤销订单行。
awk
:for循环到从最后到第一个的字段,一个计数器停在第7位。
答案 3 :(得分:0)
你可以很容易地得到倒数第七个字。
一种方法是将文件作为每行一个字的流,抓取该流的最后七行,然后抓住这七个中的第一行。
例如,使用输入文件infile
:
The quick brown fox jumps
over the lazy dog.
您可以使用以下命令序列:
pax> sed 's/^ *//;s/ *$//;s/ */\n/g' qq.in | tail -7 | head -1
brown
sed
有三个命令(以分号分隔):
s/^ *//
; s/ *$/
中删除尾随空格;和s/ */\n/g
。前两个命令是确保行的开头或结尾处的空格不会导致无关的换行符。
tail
然后得到最后七行,head
得到这七行中的第一行(即第七行的第一行)。