在行号指定的两行之间替换内容

时间:2019-08-05 14:56:48

标签: bash awk sed

我想使用bash替换由行号指定的两行之间的内容。例如。我有一个文件sample.txt,它具有以下内容。

apple
peach
orange
juice
toy
computer
phone

我有一个名为var的变量

var="cup\nbook"

我想用存储在sample.txt中的内容替换var中第二行和第五行之间的内容(包括两行),因此修改文件{后的最终内容{1}}应该是

sample.txt

该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用awk

var="cup\nbook"

awk -v var="$var" 'NR==2{print var} NR<2 || NR>5' file

apple
cup
book
computer
phone

这是一个sed解决方案,可与OSX sed一起使用(请注意变量var的定义):

var=$'cup\\\nbook'
sed "2,5c\\
$var
" file

apple
cup
book
computer
phone

答案 1 :(得分:1)

使用sed

var="cup\nbook"
sed "2,5c$var" file