代码之家  ›  专栏  ›  技术社区  ›  Leif Hvitved

基于文本将行转换为列

  •  0
  • Leif Hvitved  · 技术社区  · 7 年前

    BT1111
    2.2.2.2/3
    3.3.3.3/4
    7.2.1.1/5
    BT6766
    2.2.1.1/5
    4.5.1.1/7
    BT9898
    4.4.4.4/2
    8.8.8.8/9
    

    我希望找到一个函数,通过移动以数字一列开始的所有条目,将其对齐为两列( $1 $2 )并用相应的BT场对其进行丰富,因此所需的输出应为

    BT1111;2.2.2.2/3
    BT1111;3.3.3.3/4
    BT1111;7.2.1.1/5
    BT6766;2.2.1.1/5
    BT6766;4.5.1.1/7
    BT9898;4.4.4.4/2
    BT9898;8.8.8.8/9
    

    2 回复  |  直到 7 年前
        1
  •  2
  •   ikegami Gilles Quénot    7 年前
    perl -nle'if (/^\D/) { $n=$_ } else { print "$n;$_" }' input.txt
    

    看见 Specifying file to process to Perl one-liner 用于替代用途。

        2
  •  1
  •   Marc Lambrichs user8588010    7 年前
    $ awk '/BT/{a=$1; next}{print a ";" $1}' input.txt
    BT1111;2.2.2.2/3
    BT1111;3.3.3.3/4
    BT1111;7.2.1.1/5
    BT6766;2.2.1.1/5
    BT6766;4.5.1.1/7
    BT9898;4.4.4.4/2
    BT9898;8.8.8.8/9