seq妙用一则

﹏ヽ暗。殇╰゛Y 2022-06-18 00:44 209阅读 0赞

[haoren@IM-SJ01-Server01 gongsi]$ seq -f ‘201110%02g’ 1 26

20111001

20111002

20111003

20111004

20111005

20111006

20111007

20111008

20111009

20111010

20111011

20111012

20111013

20111014

20111015

20111016

20111017

20111018

20111019

20111020

20111021

20111022

20111023

20111024

20111025

20111026

等同于 {20111001..20111026}

-s 指定分隔符,默认是换行

-w 等位补全,就是宽度相等,不足的前面补 0

-f 格式化输出,就是指定打印的格式

可以不指定起始数值,则默认为 1

另外,不用 seq 的话还可以这样:

for i in {1..10};do echo $i;done

1 和 10 之间是两个半角的点
​ ​

从1循环到100的两种方法

for x in `seq 1 100`;do echo $x;done

for x in {1..100};do echo $x;done

输出1-100中,不包含数字7,且不能被7整除的数

seq 100 | grep -v “7” | awk ‘$0%7!=0{print}‘

seq -f”%3g” 9 11
9
10
11

% 后面指定数字的位数 默认是”%g”,

“%3g”那么数字位数不足部分是空格

sed -f”%03g” 9 11 这样的话数字位数不足部分是0

% 前面制定字符串

seq -f “str%03g” 9 11

str009
str010
str011

-w 指定输出数字同宽 不能和-f一起用

输出是同宽的-s 指定分隔符 默认是回车

seq -s” “ -f”str%03g” 9 11

str009 str010 str011

要指定\t 做为分隔符号

seq -s”echo -e “\t”” 9 11指定\n\n作为分隔符号
​ ​ ​

​ seq -s “ “ 1 10

1 2 3 4 5 6 7 8 9 10


​ seq -s “, “ 1 10

1, 2, 3, 4, 5, 6, 7, 8, 9, 10


请用linux shell 写一段脚本,实现从1..1000中所有偶数的和值

通过while 循环得到需要的结果:

​start=1;

total=0;

while [ $start -le 1000 ];do

  1. \[\[ $(($start%2)) == 0 \]\]&&total=$(($total+$start));

start=$(($start+1));

done;

echo $total;


​[chengmo@centos5 ~]$ start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total+$start)); start=$(($start+1));done;echo $total;

250500
​​
​通过 for 循环得到结果:

​​
​start=0;

total=0;

for i in $(seq $start 2 1000); do

  1. total=$(($total+$i));

done;

echo $total;

[chengmo@centos5 ~]$ start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total+$i));done;echo $total;

250500
​​​​ ​
​ 比较性能:

[chengmo@centos5 ~]$ time (start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total+$i));done;echo $total;) 250500
real 0m0.016s
user 0m0.012s
sys 0m0.003s

[chengmo@centos5 ~]$ time (start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total+$start)); start=$(($start+1));done;echo $total;)
250500
real 0m0.073s
user 0m0.069s
sys 0m0.004s

for i in ` seq -f ‘1704%02g’ 1 17` ;do echo -n $i “ “ ;mysql -D JSDB -e “select count(*) from JIESUANTJ_$i;”|awk ‘NR>1’ ;done

发表评论

表情:
评论列表 (有 0 条评论,209人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Typora

    typora是一个非常棒的markdown编辑器,之前只是拿它来写markdown文档,实时的展示样式感觉非常方便,在一个偶然中发现了这个编辑器的其他妙用。 背景是这样的,我

    相关 linux seq

    用于产生从某个数到另外一个数之间的所有整数   例一:   \ seq 1 10   结果是1 2 3 4 5 6 7 8 9 10   例二: