我有一个文件,其中包含许多以字符串px
结尾的值。我需要找到所有这些值,使用0.43
将它们复用,然后再次使用子字符串pt
而不是px
将它们写入文件
我如何实现这一目标?
例如文件中的字符串:
.ClassOne
{
margin: .35em 5px;
overflow: hidden;
padding: 0 1.4em 0 .5em;
position: relative;
text-overflow: ellipsis;
white-space: nowrap;
}
.ClassTwo
{
border: 7px solid #FFF;
border-top-color: #000;
position: absolute;
right: 6px;
top: .95em;
}
.ClassThree
{
bottom: 5px;
height: 1px;
left: 1em;
position: absolute;
right: 2em;
}
查找以px结尾的所有值,并通过乘以0.43
将它们转换为点,然后将它们写回文件。
Example: 5px = 2.15pt, -9px = -3.87pt
如何使用unix中的单行命令行实现这一目标?由于我是shell脚本的新手,我需要一些帮助。我所知道的是,可以使用sed -i
来实现。
答案 0 :(得分:2)
使用awk
在线人,你可以这样做:
awk '{for (i=1;i<=NF;i++) if ($i~/px/) {$i=$i*0.43"pt";if (i=NF) $i=$i";"}}1' file
.ClassOne
{
margin: .35em 2.15pt;
overflow: hidden;
padding: 0 1.4em 0 .5em;
position: relative;
text-overflow: ellipsis;
white-space: nowrap;
}
.ClassTwo
{
border: 3.01pt solid #FFF;;
border-top-color: #000;
position: absolute;
right: 2.58pt;
top: .95em;
}
.ClassThree
{
bottom: 2.15pt;
height: 0.43pt;
left: 1em;
position: absolute;
right: 2em;
}
这会将所有字段px
纳入其中并将它们乘以0.43
并添加pt
然后将数据写回文件。