我想使用bash
替换由行号指定的两行之间的内容。例如。我有一个文件sample.txt
,它具有以下内容。
apple
peach
orange
juice
toy
computer
phone
我有一个名为var的变量
var="cup\nbook"
我想用存储在sample.txt
中的内容替换var
中第二行和第五行之间的内容(包括两行),因此修改文件{后的最终内容{1}}应该是
sample.txt
该怎么做?
答案 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