如何使用bash更改文件的(未知)编号
我有一个html文件,我应该(用Bash)更改里面的数字。 这是一个例子:如何使用bash更改文件的(未知)编号,bash,awk,sed,scripting,Bash,Awk,Sed,Scripting,我有一个html文件,我应该(用Bash)更改里面的数字。 这是一个例子: <TR><TD ALIGN=center><FONT SIZE="-1"><B>28</B></FONT></TD> <TD ALIGN=right><FONT SIZE="-1"><B>58</B></FONT></TD> <TD ALIGN=right>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>28</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>58</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>44</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>1220</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>29</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>57</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>43</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>730</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>30</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>56</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>41</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>736</B></FONT></TD>
28
58
44
1220
29
57
43
730
30
56
41
736
我知道这些数字都包含在标签“
”和“
”中
这些数字必须全部乘以3
我该怎么办
我想写一个剧本却没有成功
谢谢
awk
或sed
可能不是最好的工具,但这可能有效:
awk -F'<B>|</B>' -v OFS= '{$2="<B>"$2*3"</B>"}1' file
<TR><TD ALIGN=center><FONT SIZE="-1"><B>84</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>174</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>132</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>3660</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>87</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>171</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>129</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>2190</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>90</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>168</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>123</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>2208</B></FONT></TD>
awk-F'|'-vofs='{$2=”“$2*3”“}1'文件
84
174
132
3660
87
171
129
2190
90
168
123
2208
awk
或sed
可能不是最好的工具,但这可能会起作用:
awk -F'<B>|</B>' -v OFS= '{$2="<B>"$2*3"</B>"}1' file
<TR><TD ALIGN=center><FONT SIZE="-1"><B>84</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>174</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>132</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>3660</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>87</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>171</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>129</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>2190</B></FONT></TD>
<TR><TD ALIGN=center><FONT SIZE="-1"><B>90</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>168</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>123</B></FONT></TD>
<TD ALIGN=right><FONT SIZE="-1"><B>2208</B></FONT></TD>
awk-F'|'-vofs='{$2=”“$2*3”“}1'文件
84
174
132
3660
87
171
129
2190
90
168
123
2208
使用HTML感知工具修改HTML。例如,在中,您可以编写
open :F html file.html ;
for //b
set . (3 * .) ;
save :F html :b ;
使用HTML感知工具修改HTML。例如,在中,您可以编写
open :F html file.html ;
for //b
set . (3 * .) ;
save :F html :b ;
到目前为止你试过什么?你最好的尝试是什么?这可以在单个awk
脚本中完成,但我不擅长awk
,所以我会这样做:1。使用sed
提取[0-9]*
之间的数字,并将其放在行的前面。2.使用awk
将其乘以3。将只是awk'{$1*=3}1
。3.用正确的sed
将数字放回行中。学习正则表达式最简单的方法是。我正在尝试使用sed
和awk
,但我不知道怎么做。我需要修改的数据位于数千条html行中间(我用grep过滤,只保留那些带有
标记的数据),但是我不能替换数千条html行中间的数据,我建议。使用html专用工具,xmllint
,xmlstarlet
等。到目前为止,您尝试了什么?你最好的尝试是什么?这可以在单个awk
脚本中完成,但我不擅长awk
,所以我会这样做:1。使用sed
提取[0-9]*
之间的数字,并将其放在行的前面。2.使用awk
将其乘以3。将只是awk'{$1*=3}1
。3.用正确的sed
将数字放回行中。学习正则表达式最简单的方法是。我正在尝试使用sed
和awk
,但我不知道怎么做。我需要修改的数据位于数千条html行中间(我用grep过滤,只保留那些带有
标记的数据),但是我不能替换数千条html行中间的数据,我建议。使用html专用工具,xmllint
,xmlstarlet
等。谢谢,您认为什么是最好的工具?如何用更新的数据重写文件?如果我用“>filename”
再写一遍,会得到一个完全交错的文件。是否有可能只重写旧文件中的数字数据?也可以对结果进行四舍五入吗?@Ignazio使用awk
重新连接数据,然后执行:awk'my commands'file>tmp&&mv tmp file
一切都是可能的,只是需要更多的时间,谢谢,您认为什么是最好的工具?如何用更新的数据重写文件?如果我用“>filename”
再写一遍,会得到一个完全交错的文件。是否有可能只重写旧文件中的数字数据?也可以对结果进行四舍五入吗?@Ignazio使用awk
重新连接数据,然后执行:awk'my commands'file>tmp&&mv tmp file
一切皆有可能,只需要更多时间,