Regex 替换匹配图案上方的线条
我有一个html文件,其中有一个表,如下所示:Regex 替换匹配图案上方的线条,regex,shell,awk,sed,Regex,Shell,Awk,Sed,我有一个html文件,其中有一个表,如下所示: 未知 废话11 ... 未知的 胡说八道 … 我需要匹配“blah24”,并将上面的“未知”替换为“测试”,以给出: 测试 blah24 我曾尝试研究sed和awk解决方案,但只能找到“匹配模式之前的插入”或“匹配模式之后的替换” 我只有使用cygwin的单机上可用的基本shell工具。$awk'NR>1{if(/blah24/)sub(/unknown/,“test”,prev);print prev}{prev=$0}END{print pre
未知
废话11
...
未知的
胡说八道
…
我需要匹配“blah24”,并将上面的“未知”替换为“测试”,以给出:
测试
blah24
我曾尝试研究sed和awk解决方案,但只能找到“匹配模式之前的插入”或“匹配模式之后的替换”
我只有使用cygwin的单机上可用的基本shell工具。$awk'NR>1{if(/blah24/)sub(/unknown/,“test”,prev);print prev}{prev=$0}END{print prev}文件
$ awk 'NR>1{if(/blah24/) sub(/unknown/,"test",prev); print prev} {prev=$0} END{print prev}' file
<td>unknown</td>
<td>blah11</td>
...
<td>test</td>
<td>blah24</td>
...
未知的
废话11
...
测试
胡说八道
...
如果blah24
作为较长字符串的一部分出现,或者如果您真的想专门替换unknown
或者标签中的任何内容或各种其他重要细节,您没有告诉我们该怎么做,但希望您能在上述情况下解决所有问题。$awk'NR>1{if(/blah24/)sub(/unknown/,“test”,prev);print prev}{prev=$0}END{print prev}'文件
未知的
废话11
...
测试
胡说八道
...
如果blah24
作为较长字符串的一部分出现,或者如果您真的想专门替换unknown
或者标签中的任何内容或各种其他重要细节,您没有告诉我们该怎么做,但希望您能在上述情况下解决所有问题。$awk'NR>1{if(/blah24/)sub(/unknown/,“test”,prev);print prev}{prev=$0}END{print prev}'文件
未知的
废话11
...
测试
胡说八道
...
如果blah24
作为较长字符串的一部分出现,或者如果您真的想专门替换unknown
或者标签中的任何内容或各种其他重要细节,您没有告诉我们该怎么做,但希望您能在上述情况下解决所有问题。$awk'NR>1{if(/blah24/)sub(/unknown/,“test”,prev);print prev}{prev=$0}END{print prev}'文件
未知的
废话11
...
测试
胡说八道
...
如果blah24
作为较长字符串的一部分出现,或者如果您确实想替换unknown
或标签中的任何内容或各种其他重要细节,您没有告诉我们该怎么做,但希望您能在上述情况下解决所有问题。在sed中,您可以这样做
sed -n '/blah24/{x;s/unknown/test/;x};x;1!p;${x;p}' file
<td>unknown</td>
<td>blah11</td>
...
<td>test</td>
<td>blah24</td>
...
sed-n'/blah24/{x;s/unknown/test/;x};x;1.p${x;p}'文件
未知的
废话11
...
测试
胡说八道
...
它的每一行都将当前行交换为保持缓冲区。如果找到blah24,则交换保留的行,将其更改为test,然后将其交换回。它会打印除1之外的每一行(就像打印空白一样)。在sed中,您可以这样做
sed -n '/blah24/{x;s/unknown/test/;x};x;1!p;${x;p}' file
<td>unknown</td>
<td>blah11</td>
...
<td>test</td>
<td>blah24</td>
...
sed-n'/blah24/{x;s/unknown/test/;x};x;1.p${x;p}'文件
未知的
废话11
...
测试
胡说八道
...
它的每一行都将当前行交换为保持缓冲区。如果找到blah24,则交换保留的行,将其更改为test,然后将其交换回。它会打印除1之外的每一行(就像打印空白一样)。在sed中,您可以这样做
sed -n '/blah24/{x;s/unknown/test/;x};x;1!p;${x;p}' file
<td>unknown</td>
<td>blah11</td>
...
<td>test</td>
<td>blah24</td>
...
sed-n'/blah24/{x;s/unknown/test/;x};x;1.p${x;p}'文件
未知的
废话11
...
测试
胡说八道
...
它的每一行都将当前行交换为保持缓冲区。如果找到blah24,则交换保留的行,将其更改为test,然后将其交换回。它会打印除1之外的每一行(就像打印空白一样)。在sed中,您可以这样做
sed -n '/blah24/{x;s/unknown/test/;x};x;1!p;${x;p}' file
<td>unknown</td>
<td>blah11</td>
...
<td>test</td>
<td>blah24</td>
...
sed-n'/blah24/{x;s/unknown/test/;x};x;1.p${x;p}'文件
未知的
废话11
...
测试
胡说八道
...
它的每一行都将当前行交换为保持缓冲区。如果找到blah24,则交换保留的行,将其更改为test,然后将其交换回。它会打印除1之外的每一行(因为它会打印空白)。感谢您的快速回复
blah24
将是该html文件中的唯一ID。我想特别替换总是出现在唯一ID上方的unknown
,并将内容写回原始文件。好的,但是blah241
或fooblah24
是否也存在于文件中?怎么样foouknownbar
?如果是的话,你想用这些做什么?使用任何UNIX命令写回原始文件是cmd file>tmp&&mv tmp file
。GNU sed有一个-i
选项,GNU awk有-i选项,但是他们在幕后都做了同样的事情。很好,我提出了几乎相同的逻辑,但在sed中+1:)谢谢你的快速回复blah24
将是该html文件中的唯一ID。我想特别替换总是出现在唯一ID上方的unknown
,并将内容写回原始文件。好的,但是blah241
或fooblah24
是否也存在于文件中?怎么样foouknownbar
?如果是的话,你想用这些做什么?使用任何UNIX命令写回原始文件是cmd file>tmp&&mv tmp file
。GNU sed有一个-i
选项,GNU awk有-i选项,但是他们在幕后都做了同样的事情。很好,我提出了几乎相同的逻辑,但在sed中+1:)谢谢你的快速回复blah24
将是该html文件中的唯一ID。我想特别替换总是出现在唯一ID上方的unknown
,并将内容写回原始文件。好的,但是blah241
或fooblah24
是否也存在于文件中?怎么样foouknownbar
?如果是的话,你想用这些做什么?使用任何UNIX命令写回原始文件是cmd file>tmp&&mv tmp file
。GNU sed有一个-i
选项,GNU awk有-i选项,但是他们在幕后都做了同样的事情。很好,我提出了几乎相同的逻辑,但在sed中+1:)谢谢你的快速回复blah24
将是该html文件中的唯一ID。我想特别替换未知