0

我正在尝试提取平面文件最后一行中括号之间的值,例如“last_line (4)”。这是最后一行,我想提取 4 并将其存储在一个变量中。我已经使用tail命令提取了最后一行,但现在我无法提取括号之间的值。

请帮忙。

4

4 回答 4

1
l=$(tail -n1 filename); tmp=${l##*(}; tmp=${tmp%)*}; printf "tmp: %s\n" $tmp

输出

温度:4

以脚本格式编写,您正在使用子字符串删除来修剪所有内容,直到最后一行的第一行(和最后一行之后的所有内容),只留下4

l=$(tail -n1 filename)    ## get the last line
tmp=${l##*(}              ## trim to ( from left
tmp=${tmp%)*}             ## trim to ) from right
printf "tmp: %s\n" $tmp
于 2015-08-12T08:38:13.370 回答
1

使用 awk:

$ cat input
first line
2nd line
last line (4) with some data

$ awk -F'[()]' 'END{print $2}' input
4
于 2015-08-12T07:56:54.303 回答
0

你可以使用这个脚本。

在此脚本中,我将最后一行保存在 tmp 文件中,最后将其删除。括号()之间的数字在变量 WORD 中

 #!/bin/ksh

if test "${DEBUG}" = "Y"
then

   set -vx

fi

tail -1 input>>tmp


WORD=`sed -n 's/.*(//;s/).*//;p' tmp`

echo $WORD

rm tmp
于 2015-08-12T09:56:38.520 回答
0

赛德:

sed -n '${s/.*(//;s/).*//;p}' file
于 2015-08-12T08:25:39.207 回答