如果前一行下面的行等于第一列的特定值,则打印两行

时间巧克力

我有一个可变的输入文件,其格式可以如下。

text1 valueA valueN valueB
text2 valueX
text1 valueC valueN valueD
text2 valueX
text1 valueE valueM valueF
text1 valueG valueM valueH
text1 valueI valueN valueJ
text2 valueX
text1 valueK valueO valueL
text1 valueP valueO valueQ
text1 valueR valueN valueS
text1 valueT valueM valueU

我只想打印上一行下面text1 valueA valueN valueB是否text2 valueX存在。例如,输出应为:

text1 valueA valueN valueB
text2 valueX
text1 valueC valueN valueD
text2 valueX
text1 valueI valueN valueJ
text2 valueX

我还需要能够匹配的一部分valueX假设valueX=a.b.c.d-e,我需要搭配a.b.

myvariable=a.b.
echo $myvariable
a.b.

更新:对不清楚的输入数据表示歉意...我想我可以匹配部分文本,但是我错了。

因此,如果数据如下所示:

text1 valueA valueN valueB
text2 a.b.c.d-e
text1 valueC valueN valueD
text2 a.b.c.d-e
text1 valueE valueM valueF
text1 valueG valueM valueH
text1 valueI valueN valueJ
text2 a.b.c.d-e
text1 valueK valueO valueL
text1 valueP valueO valueQ
text1 valueR valueN valueS
text1 valueT valueM valueU

您如何匹配,例如a.b.,如果val=a.b.

echo $val
a.b.
詹姆斯·布朗

这是awk中的一个:

$ awk '$0=="text2 valueX"{print p ORS $0}{p=$0}' file

输出:

text1 valueA valueN valueB
text2 valueX
text1 valueC valueN valueD
text2 valueX
text1 valueI valueN valueJ
text2 valueX

解释:

$ awk '
$0=="text2 valueX" {  # if record is a match
    print p ORS $0    # print previous buffered record and current
}
{
    p=$0              # buffer record for next round
}' file

更新升级与更新的数据:

.正则表达式元字符一样,它需要在输入处进行转义以避免与以下内容匹配abbb

$ awk -v s="a\\\.b\\\." '$0~s{print p ORS $0}{p=$0}' file

现在输出:

text1 valueA valueN valueB
text2 a.b.c.d-e
text1 valueC valueN valueD
text2 a.b.c.d-e
text1 valueI valueN valueJ
text2 a.b.c.d-e

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果一列中的图案匹配两行,如何打印新行?

匹配模式并将下面的两行连接到一行

删除前两列中的值,但第一行中的值等于工作表VBA名称的行除外

如果第二行包含与第一行相同的匹配项,如何打印两行?

将每两行连续添加到一列中,然后将其与前一行相除并打印

如果同一行的另一列等于某值,如何计算一列中的值?

索引匹配两行一列值的问题

打印第一行的第一列和最后一行的第二列,其中最后一列具有相同的值

如果第一列的值為空,如何刪除一行?

熊猫:如果一列匹配而另一列不匹配,则删除两行

如何在 HTML/CSS 中嵌套一列一行和一列两行

如果 logic = true,则使用前一行的值,否则使用另一列

从每一行的第一行打印值

熊猫将一行的值分为两行

如果下一行重复列A的值,则删除两行

如果列匹配,则在匹配前打印一行

如果一列中有一个相同的值,如何合并两行并更改列名

遍历一列并删除具有特定值VBA的单元格下面的所有行

选择两行,两行之和等于一个值

搜索字符串并使用awk打印第一行的第一列

如何删除表中除前两行外的所有行(标题为第一行)

如果 Nan,熊猫将列值移动到同一列中的第一行

从列的第二行复制到下一列的第一行的值

在特定列的 Oracle Sql 中将两行连接为一行

根据特定列将一行解构为两行

如何使用Twitter Bootstrap在第一列中加入两行(或模拟该效果)

当一行的值大于下一行时如何合并两行

在下一行空白区域下方的第一行中重复第一列的值

Pandas Dataframe:如何比较一行的两列中的值是否等于后续行的同一列中的值?