从下一行获取值并合并 - awk
Get values from the next row and merge- awk
我有一个像这样的竖线分隔文件
OLD|123432
NEW|232322
OLD|1234452
NEW|232324
OLD|656966
NEW|232325
我正在尝试创建一个新文件,并在其中尝试根据第一列 (OLD/NEW) 中的值合并行。输出文件中的第一列将包含新编号,第二列将包含旧编号。
输出
232322|123432
232324|1234452
232325|656966
我在这里看了答案How to merge every two lines into one from the command line?。我知道这不是确切的解决方案,但用作起点。
并试图让它解决这个问题,但抛出语法错误。
awk -F "|" 'NR%2{OFS = "|" printf "%s ",[=12=];next;}1'
你可以使用这个awk
:
awk 'BEGIN {FS=OFS="|"} == "NEW" {print , old} == "OLD" {old = }' file
232322|123432
232324|1234452
232325|656966
使用[=12=]
会有整行的值。如果字段分隔符是管道,则第二列是 </code>,其中包含数字。</p>
<p>如果要将余数与 <code>NR%2
一起使用,另一种选择是将第二列的值存储在变量中,例如 v
awk 'BEGIN{FS=OFS="|"} NR%2{v=;next;}{print ,v}' file
输出
232322|123432
232324|1234452
232325|656966
我有一个像这样的竖线分隔文件
OLD|123432
NEW|232322
OLD|1234452
NEW|232324
OLD|656966
NEW|232325
我正在尝试创建一个新文件,并在其中尝试根据第一列 (OLD/NEW) 中的值合并行。输出文件中的第一列将包含新编号,第二列将包含旧编号。
输出
232322|123432
232324|1234452
232325|656966
我在这里看了答案How to merge every two lines into one from the command line?。我知道这不是确切的解决方案,但用作起点。
并试图让它解决这个问题,但抛出语法错误。
awk -F "|" 'NR%2{OFS = "|" printf "%s ",[=12=];next;}1'
你可以使用这个awk
:
awk 'BEGIN {FS=OFS="|"} == "NEW" {print , old} == "OLD" {old = }' file
232322|123432
232324|1234452
232325|656966
使用[=12=]
会有整行的值。如果字段分隔符是管道,则第二列是 </code>,其中包含数字。</p>
<p>如果要将余数与 <code>NR%2
一起使用,另一种选择是将第二列的值存储在变量中,例如 v
awk 'BEGIN{FS=OFS="|"} NR%2{v=;next;}{print ,v}' file
输出
232322|123432
232324|1234452
232325|656966