免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11269 | 回复: 10
打印 上一主题 下一主题

seq 的一般用途和它相若的命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-15 20:28 |只看该作者 |倒序浏览
seq 是Linux 中一個預設的外部命令,一般用作一堆數字的簡化寫法,如
seq 1 10
便會出現
1
2
3
4
5
6
7
8
9
10
它還有三個選項
-f, --format=FORMAT      use printf style floating-point FORMAT (default: %g)
  -s, --separator=STRING   use STRING to separate numbers (default: \n)
  -w, --equal-width        equalize width by padding with leading zeroes
-f 最常用 , 例如一次制做 10 個名 dir001 , dir002 .. dir010 的目錄,它便很有用途,我們可以
這樣下一個命令便可了
seq -f 'dir%03g' 1 10 | xargs mkdir

mkdir $(seq -f 'dir%03g' 1 10)
它用的是 printf 的格式 , %03g' 代表以三位浮點數,以此方法,如用bash3 的 printf
也可作為等價命令
printf 'dir%03d\n' {1..10} | xargs mkdir  或 mkdir `printf 'dir%03d ' {1..10}`
awk 當然也可以
awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir
這樣會比寫一個腳本快, 不必寫成
for dir in 001 002 003 004 005 006 007 008 009 010
do
    mkdir dir${dir}
done
我也常用 seq 下載一些用數字的 jpeg , 只要格式有數字順序便可,尤以一些 xxx site  ;)
for i in `seq -f '%02g' 1 20`
do
  if ! wget -P $HOME/tmp -c [img]http://www.xxxsite.com/photo/$i.jpg[/img] ; then
     wget -P $HOME/tmp -c $_
  fi
done

-s 選項主要改變輸出的分格符, 預設是 \n , 就是 newline
如用 -s 便可改變 , 如
seq -s ' ' 1 10
1 2 3 4 5 6 7 8 9 10  , 以空格作為分格, 但在 Gnu 的 seq , 好像
不支援 \n ,\t ...等字符? 如用\n\n, 以兩個空格 , 便得寫成
[victor@localhost ~]$ seq -s '
>
> ' 1 5
1

2

3

4

5
\t 便得改變IFS, 如用 \t\t
OIFS=$IFS
IFS="\t\t"
seq -s `echo -e $IFS` 1 5
IFS=$OIFS
其它的字符也是這樣吧?

-w 選項不太明白它的 help 寫什麼,也沒用過,還望大俠告訴小弟。 謝 :)

簡單介紹了這個命令和使用,但只是無數的用法其中一二例子,在 *nix 的世界裏,一些小工具合在一起便成為強大
的工具, 只要你有創意便成了。

最後希望拋磚引玉,有大俠寫些心得。

论坛徽章:
0
2 [报告]
发表于 2006-01-15 20:30 |只看该作者
好像只有linux上有,其他UNIX上都没有,我使用的UNIX上连eval都没有。。

论坛徽章:
0
3 [报告]
发表于 2006-01-15 20:35 |只看该作者
是的, seq 這個命令只在 Linux 下才有,其它的 Unix 必須安裝,或用 Posix shell 的 printf
或 awk 代替, Ksh93, zsh, ash 也可做成等價的命令

论坛徽章:
0
4 [报告]
发表于 2006-01-15 21:36 |只看该作者
提到安装的问题:请指点在下.

怎么安装这些命令?

论坛徽章:
0
5 [报告]
发表于 2006-01-15 21:41 |只看该作者
原帖由 pvb1979 于 2006-1-15 21:36 发表
提到安装的问题:请指点在下.

怎么安装这些命令?

linux下最方便的事rpm包,UNIX下嘛,可以copy别的机器上的已经编译好的,也可以自己下载下来编译安装啊,google一下应该很多的。。    不过我只在linux下安装过,那unix下的安装还是留给别人比较好。。

论坛徽章:
0
6 [报告]
发表于 2006-01-15 21:54 |只看该作者
原帖由 大蚂蚁 于 2006-1-15 21:41 发表

linux下最方便的事rpm包,UNIX下嘛,可以copy别的机器上的已经编译好的,也可以自己下载下来编译安装啊,google一下应该很多的。。    不过我只在linux下安装过,那unix下的安装还是留给别人比较好。。



公司的机子,尽管有几台是测试机,也不敢乱动.不象shell无所谓可以随便测试.安装文件生怕犯错,就有点吃不了兜着走的感觉.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-01-15 23:58 |只看该作者
-w根据数字宽度,自动在不足位前补0
例如:
/home/lee#seq -w 9 10
09
10
/home/lee#seq -w 999 1000
0999
1000
/home/lee#seq -w 99 100
099
100
/home/lee#seq 9 10
9
10
/home/lee#seq 999 1000
999
1000
/home/lee#seq 99 100
99
100

论坛徽章:
0
8 [报告]
发表于 2006-01-16 08:04 |只看该作者
原帖由 pvb1979 于 2006-1-15 21:54 发表



公司的机子,尽管有几台是测试机,也不敢乱动.不象shell无所谓可以随便测试.安装文件生怕犯错,就有点吃不了兜着走的感觉.



# seq 1 10
1
2
3
4
5
6
7
8
9
10
# oslevel
5.1.0.0
# whereis seq
seq: /usr/bin/seq
# ls -l /usr/bin/seq
lrwxrwxrwx   1 root     system           26 Jan 03 16:42 /usr/bin/seq -> ../../opt/freeware/bin/seq

[ 本帖最后由 aibi 于 2006-1-16 08:21 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-01-16 21:00 |只看该作者
原帖由 寂寞烈火 于 2006-1-15 23:58 发表
-w根据数字宽度,自动在不足位前补0
例如:



哈哈,拋磚引玉目的達到,thanks

论坛徽章:
0
10 [报告]
发表于 2006-01-16 21:55 |只看该作者
linux下是装在coreutils这个包里面的   在其他的UNIX 下  应该可以装    以前装LFS的时候  有这个包的 源代码安装包    就去LFS站点下个 应该可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP