如何使用perl正则表达式转换以下文本:
1100101
1100111
1110001
1110101
到
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1
我尝试使用
perl -pe 's// /g' < text.txt
但它给了我一些有趣的结果:
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1
答案 0 :(得分:7)
perl -pe 's/(?<=[^\n])([^\n])/ \1/g'
答案 1 :(得分:5)
为什么要使用正则表达式?
perl -pe '$_ = join " ", split ""'
答案 2 :(得分:2)
使用预见:
perl -pe 's/(\d)(?=.)/$1 /g'
使用前瞻和后视:
perl -pe 's/(?<=\d)(?=.)/ /g'
答案 3 :(得分:1)
使用自动拆分的另一种方法:
perl -F// -ane 'print "@F";' file
答案 4 :(得分:0)
或者像这样...
$ perl -pe 's/(?<!^)(\d)/ \1/g' input
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1
......这里对负面正则表达式有一个很好的解释: negative regex for perl string pattern match
答案 5 :(得分:0)
你快到了:
perl -pe 's/(.)/$1 /g' your_file
测试如下:
> cat temp
1100101
1100111
1110001
1110101
> perl -pe 's/(.)/$1 /g' temp
1 1 0 0 1 0 1
1 1 0 0 1 1 1
1 1 1 0 0 0 1
1 1 1 0 1 0 1