使用shell脚本从平面文件中提取值

时间:2015-08-12 07:49:53

标签: shell grep tail flat-file extract-value

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

请帮助。

4 个答案:

答案 0 :(得分:1)

使用awk:

path = "E:/plot/2"
fileList = list.files(path=path,pattern="\\.teTestResult",full.names=T)
myfiles = lapply(fileList, read.csv,header=TRUE,sep=";" )

a <- data.frame(myfiles)
attach(a)
boxplot(Return~gama)
boxplot(Return~theta)
boxplot(Return~detectionsLimit)
boxplot(Return~NSMOOTH)
boxplot(Return~NREF)
boxplot(Return~NOBS)
boxplot(Return.1~gama.1)
boxplot(Return.1~theta.1)
boxplot(Return.1~detectionsLimit.1)
boxplot(Return.1~NSMOOTH.1)
boxplot(Return.1~NREF.1)
boxplot(Return.1~NOBS.1)
...
boxplot(Return.9~NOBS.9)

答案 1 :(得分:1)

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

<强>输出

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

答案 2 :(得分:0)

sed的:

sed -n '${s/.*(//;s/).*//;p}' file

答案 3 :(得分: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