我想在特定行(比如第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
但这是一个变量。我必须为v2
和v3
创建类似的行,这是我不想要的。有帮助吗?
PS。在上面的示例中,我使用了echo
三次,因此我可以使用sed
/ awk
直到空testfile
的第3行。是否有更聪明的方式插入第n行?
答案 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}'