我在这个网站上尝试了无数关于 awk 语法的建议,但不知何故我无法理解 awk..
只有当我的 expr 存在于下一行时,我才尝试合并两行(当前行和下一行)。
例如我有一个包含以下内容的文本文件:
<option value="1" selected> channel 1
<div id="program_13" class="tree_3"><input type="checkbox" name="output_checkbox" value="13"> Somename1</div>
<option value="2" selected> channel 2
<div id="program_21" class="tree_3"><input type="checkbox" name="output_checkbox" value="21"> Someothername</div>
<option value="3" selected> channel 3
<option value="4" selected> channel 4
<option value="5" selected> channel 5
只有当下一行中存在“output_checkbox”表达式时,我才想将当前行与下一行连接起来。这可能适用于所有或 5 条主线中的任何一条。
在上面的例子中,我想要的结果是:
<option value="1" selected> channel 1 <div id="program_13" class="tree_3"><input type="checkbox" name="output_checkbox" value="13"> Somename1</div>
<option value="2" selected> channel 2 <div id="program_21" class="tree_3"><input type="checkbox" name="output_checkbox" value="21"> Someothername</div>
<option value="3" selected> channel 3
<option value="4" selected> channel 4
<option value="5" selected> channel 5
我希望通过使用 sed(我认为我可以处理)在最后得到以下结果:
channel 1: Somename1
channel 2: Someothername
channel 3:
channel 4:
channel 5:
期待您的建议
最佳答案
尝试这一行:
awk '/output_checkbox/{printf "%s",$0;next}{printf (NR>1?"\n%s":"%s"), $0}END{print ""}' file
小测试:
kent$ cat f
<option value="1" selected> channel 1
<div id="program_13" class="tree_3"><input type="checkbox" name="output_checkbox" value="13"> Somename1</div>
<option value="2" selected> channel 2
<div id="program_21" class="tree_3"><input type="checkbox" name="output_checkbox" value="21"> Someothername</div>
<option value="3" selected> channel 3
<option value="4" selected> channel 4
<option value="5" selected> channel 5
kent$ awk '/output_checkbox/{printf "%s",$0;next}{printf (NR>1?"\n%s":"%s"), $0}END{print ""}' f
<option value="1" selected> channel 1 <div id="program_13" class="tree_3"><input type="checkbox" name="output_checkbox" value="13"> Somename1</div>
<option value="2" selected> channel 2 <div id="program_21" class="tree_3"><input type="checkbox" name="output_checkbox" value="21"> Someothername</div>
<option value="3" selected> channel 3
<option value="4" selected> channel 4
<option value="5" selected> channel 5
关于regex - 如何根据下一行中存在的模式组合当前行和下一行。 (使用 awk),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055086/