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
目测是这样的,未测试。。。
  1. 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
  1. 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'
  2. ?|?|c|d|e|
  3. a|?|?|d|e|
  4. a|b|?|?|e|
  5. a|b|c|?|?|
  6. ?|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