我正在尝试提取平面文件最后一行中括号之间的值,例如“last_line (4)”。这是最后一行,我想提取 4 并将其存储在一个变量中。我已经使用tail
命令提取了最后一行,但现在我无法提取括号之间的值。
请帮忙。
我正在尝试提取平面文件最后一行中括号之间的值,例如“last_line (4)”。这是最后一行,我想提取 4 并将其存储在一个变量中。我已经使用tail
命令提取了最后一行,但现在我无法提取括号之间的值。
请帮忙。
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
使用 awk:
$ cat input
first line
2nd line
last line (4) with some data
$ awk -F'[()]' 'END{print $2}' input
4
你可以使用这个脚本。
在此脚本中,我将最后一行保存在 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
赛德:
sed -n '${s/.*(//;s/).*//;p}' file