Chinaunix
标题:
如何快速循环?
[打印本页]
作者:
cfzxwxb
时间:
2014-09-11 19:50
标题:
如何快速循环?
有这样一些字段
a|b|c|d|e|
如何快速的循环成一下格式?
a|b|c|?|?|
?|b|c|d|?|
?|?|c|d|e|
a|?|?|d|e|
a|b|?|?|e|
作者:
李满满
时间:
2014-09-11 20:05
好没意思的题目啊~
作者:
cfzxwxb
时间:
2014-09-11 20:11
二楼的,请注意,我说的是快速循环
作者:
jason680
时间:
2014-09-11 20:14
回复
1#
cfzxwxb
How about this way ...
$ echo "a|b|c|d|e|" | awk 'BEGIN{OFS=FS="|"}{a=$0;$1=$(NF-1)="?";print$0;for(n=1;n<=NF-2;n++){$0=a;$n=$(n+1)="?";print $0}}'
?|b|c|d|?|
?|?|c|d|e|
a|?|?|d|e|
a|b|?|?|e|
a|b|c|?|?|
作者:
Herowinter
时间:
2014-09-11 20:28
目测是这样的,未测试。。。
echo "a|b|c|d|e|"|awk 'BEGIN{FS=OFS="|"} {s=$0;n=NF-2;for(i=1;i<NF;i++){$0=s;$n="?";if(++n==NF)n=1;$n="?";print}}'
复制代码
作者:
yestreenstars
时间:
2014-09-11 20:33
回复
5#
Herowinter
Very good!
你为啥不装个Cygwin呢,多方便。
作者:
cfzxwxb
时间:
2014-09-11 20:33
4楼的可以,但和我原来的速度差不多
作者:
Herowinter
时间:
2014-09-11 20:34
本帖最后由 Herowinter 于 2014-09-11 20:35 编辑
回复
6#
yestreenstars
公司啥都有,家里算了,有空手写下,主要锻炼算法和思路。
)
而且真要用可以把公司的笔记本带回家。
作者:
yestreenstars
时间:
2014-09-11 20:37
回复
8#
Herowinter
对的,不依赖终端想出来才是提高shell的好方法~
作者:
jason680
时间:
2014-09-11 20:48
回复
7#
cfzxwxb
what do you want to do ...
or
http://bbs.chinaunix.net/forum.p ... mp;fromuid=24785593
作者:
cfzxwxb
时间:
2014-09-11 21:02
10楼的帖子是说我不想告诉别人我在干什么。是吗?
其实我原来的程序一直在用着,只是想优化一下!
以前我也发过一个帖子,是关于分解的,有一位大侠把我电脑30多分钟干的活缩短为2分多钟,
就是echo {a,b}{a,n,c}a{d,e,f,a}这个,真的很迅速!
所以我今天就是来看看大家能不能有更好的方法快速循环。没有别的意思。
多谢jason680英雄。
如果有更快捷的方法,还望不吝赐教!
作者:
yinyuemi
时间:
2014-09-11 21:25
回复
1#
cfzxwxb
echo "a|b|c|d|e|"|sed -nr 's/^/#/;:a;s/([^#]*)#([^|]+)\|([^|]+)\|(.*)/\1?|?|\4\n\1\2|#\3|\4/;P;s/.*\n//;/#[^|]+\|$/tb;ta;:b;s/^[^|]+\||[^|]+\|$/?|/gp'
?|?|c|d|e|
a|?|?|d|e|
a|b|?|?|e|
a|b|c|?|?|
?|b|c|d|?|
复制代码
作者:
Herowinter
时间:
2014-09-11 21:33
回复
11#
cfzxwxb
目测是PF大神,帮你召唤之。
作者:
reyleon
时间:
2014-09-11 21:37
回复
13#
Herowinter
PF大神在家板砖,没闲工夫出来游荡.
作者:
yestreenstars
时间:
2014-09-11 21:40
回复
12#
yinyuemi
屌爆了~
作者:
cfzxwxb
时间:
2014-09-11 22:14
PF大神是什么意思?
作者:
wiliiwin
时间:
2014-09-11 22:25
yinyuemi 发表于 2014-09-11 21:25
回复 1# cfzxwxb
这是如何想到的哦,很佩服
作者:
chengchow
时间:
2014-09-12 09:57
echo 'a|b|c|d|e|' | awk 'BEGIN{FS=OFS="|"}{for(i=1;i<=5;i++){a=$0;$((i+2)%5+1)="?";$((i+3)%5+1)="?";print;$0=a}}'
作者:
baoersc
时间:
2014-09-12 10:26
思维体操,锻炼能力的
作者:
cfzxwxb
时间:
2014-09-12 23:59
19楼的
宝儿上床
,希望你不要耻笑我们这些雏。
虽然我们计算机语言不如你们这些大侠会的多,但是,我们有工作,有钱挣,能养活自己,自食其力。
我们不希望得到嘲笑!
希望尊重我们的学习热心!
如果各位嫌弃小弟,那在下闪人。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2