我有一个相当大的文件(单列),其数据类似于:
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
我无法想象如何确保"寻找下一次出现"应该执行,但希望有一个功能,我设法忽略了?
答案 0 :(得分:2)
perl -nle'if (/^\D/) { $n=$_ } else { print "$n;$_" }' input.txt
有关其他用法,请参阅Specifying file to process to Perl one-liner。
答案 1 :(得分:0)
$ 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