使用awk在特定行上插入多个变量

时间:2016-09-06 21:07:21

标签: shell variables awk

我想在特定行(比如第3行)插入一些变量(比如说3)。我有以下MWE。

#!/bin/sh

echo  > testfile
echo  >> testfile
echo  >> testfile
v1=1; v2=2; v3=3
sed -i "3,3c\ $v1  $v2  $v3" testfile
cat testfile

我可以一步使用awk吗?我能做到

awk -v value=$v1 ' NR==3 {$1=value"\t"}1' testfile > tmp; mv tmp testfile

但这是一个变量。我必须为v2v3创建类似的行,这是我不想要的。有帮助吗?

PS。在上面的示例中,我使用了echo三次,因此我可以使用sed / awk直到空testfile的第3行。是否有更聪明的方式插入第n行?

2 个答案:

答案 0 :(得分:1)

使用awk可以使用空文件执行此操作:

upper_quantile <- quantile(mydata$a, 0.9)
lower_quantile <- quantile(mydata$a, 0.1)

# col a     where a > its 90th percentile    becomes NA
mydata$a[mydata$a > upper_quantile] <- NA
mydata$a[mydata$a < lower_quantile] <- NA

答案 1 :(得分:0)

你可以试试这个。使用-v在shell级别定义变量。

awk -v v1="$one" -v v2="$two" -v v3="$three" 'BEGIN{OFS="\t"} {print "\n\n" v1, v2, v3}'