我想在我的文件的每一行中替换每个"<TD>" with "<TH>"
,但仅在"<TD>Grand Total" to "</TABLE>"
关键字之后,而不是在"<TD>Grand Total"
关键字之前,用bash脚本来替换。想要替换linux文件中的两个字符串之间的特定字
我想下面的命令,但它是替换整个文件的关键字。请帮帮我。
awk 'match($0,"<TD>Grand.*"){print substr($0,RSTART)}' myfile.txt | sed -i 's/TD/TH/g' myfile.txt
样本数据低于
<br><br>Book Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>30</TD><TD>product2><TD>45</TD></TR><TR><TD>Grand Total</TD><TD>75</TD></TR></TABLE>
<br><br>Shoe Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>20</TD><TD>product2><TD>60</TD></TR><TR><TD>Grand Total</TD><TD>80</TD></TR></TABLE>
<br><br>Apparel Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>60</TD><TD>product2><TD>40</TD></TR><TR><TD>Grand Total</TD><TD>100</TD></TR></TABLE>
所需数据样本:
<br><br>Book Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>30</TD><TD>product2><TD>45</TD></TR><TR><TH>Grand Total</TH><TH>75</TH></TR></TABLE>
<br><br>Shoe Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>20</TD><TD>product2><TD>60</TD></TR><TR><TH>Grand Total</TH><TH>80</TH></TR></TABLE>
<br><br>Apparel Inventory Report <br><br>
<TABLE BORDER=1><TR><TH>product</TH><TH>Quantity</TH></TR><TR><TD>product1><TD>60</TD><TD>product2><TD>40</TD></TR><TR><TH>Grand Total</TH><TH>100</TH></TR></TABLE>
您能给出一个示例输入以使其更清楚吗?样本要求的输出也会有所帮助。 – fedorqui
是的,你可以检查myfile.txt的链接 –
尝试发布遵循一定的问题http://stackoverflow.com/help/mcve – fedorqui