我想使用sed命令替换html文件中的几行,从csv文件中获取信息。
这是我要编辑的html(Test.html)的摘要,(" / ** /"是要编辑的行):
series: [{
name: 'Alerta',
color: "orange",
/*1*/ data: [4, 3, 4]
}, {
name: 'Pre-Emergencia',
color: "red",
/*2*/ data: [0, 0, 0]
}, {
name: 'Emergencia',
color: "purple",
/*3*/ data: [0, 0, 0]
}]
这是我想要获取新值的CSV(Test.csv):
/*1*/ data: [3, 5, 5]
/*2*/ data: [1, 3, 1]
/*3*/ data: [10, 6, 4]
这是我现在正在使用的脚本(它仅用于替换一行,从一个csv文件中包含一行)
export TEST1="$(sed 's/ //g' Test.csv)"
export TEST2="$(sed 's/ //g' Test.csv)"
export TEST3="$(sed 's/ //g' Test.csv)"
sed -i -e '/*1*/c\'"$TEST1"'' Test.html
sed -i -e '/*2*/c\'"$TEST2"'' Test.html
sed -i -e '/*2*/c\'"$TEST2"'' Test.html
我错了?该脚本应如何运作? 非常感谢!
答案 0 :(得分:0)
使用单个 awk 命令:
series: [{
name: 'Alerta',
color: "orange",
/*1*/ data: [3, 5, 5]
}, {
name: 'Pre-Emergencia',
color: "red",
/*2*/ data: [1, 3, 1]
}, {
name: 'Emergencia',
color: "purple",
/*3*/ data: [10, 6, 4]
}]
输出:
Sub toggggle()
With Range("A:A").Cells.SpecialCells(xlCellTypeBlanks)
.EntireRow.Hidden = Not .EntireRow.Hidden
End With
End Sub
答案 1 :(得分:0)
我将Test.csv转换为sed命令列表并将其传递给sed:
sed -e 's/\*/\\*/g' -e 's|data.*$|s/data.*$/&/|' Test.csv | sed -f- Test.html
这是做什么的:
-e 's/\*/\\*/g'
将Test.csv中的每个*
转换为\*
-e 's|data.*$|s/data.*$/&/|'
将data: [3, 5, 5]
变为s/data.*$/data: [3, 5, 5]/
sed -f- Test.html
从管道中获取sed命令并在Test.html上运行 sed -e 's/\*/\\*/g' -e 's|data.*$|s/data.*$/&/|' Test.csv
的中间输出是:
/\*1\*/ s/data.*$/data: [3, 5, 5]/ /\*2\*/ s/data.*$/data: [1, 3, 1]/ /\*3\*/ s/data.*$/data: [10, 6, 4]/
因此,对Test.html使用上述命令会获得此输出:
series: [{ name: 'Alerta', color: "orange", /*1*/ data: [3, 5, 5] }, { name: 'Pre-Emergencia', color: "red", /*2*/ data: [1, 3, 1] }, { name: 'Emergencia', color: "purple", /*3*/ data: [10, 6, 4] }]