您的位置:首页 > 运维架构 > Shell

cut和sort的简单应用-bash学习(1)

2010-08-18 12:44 246 查看
Input file: test.txt

3 demos: cutsh, cutsh2, sortsh.

outputs:cutout2, cutout3, cutout4, timesort

run: $./cutsh; $./cutsh2; $./sortsh

Descriptions to demo

5.1

cutsh

(注意空格的使用
;

注意对齐。)

1. #! /bin/bash –x     (bash文件开头格式,-x标识添加跟踪)
2. echo "There are" $1 "columns."	($1是执行文件后的第一个参数,$2是第只二个参数。比如:$./cutsh 3 4,那么$1是3,$2是4。)
3. var=2	(定义了一个变量,赋值为2,调用变量时用$var)
4. #while [ $var -le 4 ]; do	(le,小于等于)(最好不使用此方法,麻烦)
5. #while [ $var -lt 4 ]; do	(lt,小于)
6. #while [ $var -le 4 ]	(gt,大于)
7. while (($var <= 4))
8. do
9.    cut -d "|" -f $var-$1 test.txt > cutout$var
10.    var=$((var+1))	(变量自加)
11. done 


 

while

的用法总结:

1)   

#while [ $var -le 4 ]; do    

如果

while

使用放括弧,放括弧前后要用空格分开,后面有分号,则紧跟

do



2)   

#while [ $var -le 4 ]

如果

while

使用放括弧,放括弧前后要用空格分开,后面没有分号,换行加

do



   

3)   

while

((

$var

<=

4

))

也可直接使用双括弧,换行加

do



 

cut

的用法:

cut -f list [-d delim] [-s]
[file...]

-f 表示字段
field,表示把文件
file中每一行上的字段或一个
4000
字符串中的字段萃取出来;使用
list参数界定需要被萃取出来的字段的范围;

-d 指定字段分割符;默认是
tab键所表示的字符;

 

A:以逗号分割的数字,表示要从文本行中的相应位置处萃取出对应的字符;

例如:
cut -d:
-f
1,2,4 file  #表示把文件
file中的每一行上的第一个字段、第二个字段和第四个字段萃取出来;此时共萃取出来
3个字段;字段之间使用的分割符是冒号;

B:以一个短横线分割的数字,表示从横线左边的数字表示的字段位置处,开始依次递增
1,直到到达横线右边的数字表示的字段位置处,把横线左边的数字和右边的数字之间的连续数字所表示的字段位置处的字段萃取出来;

例如:
cut -d:
-f
1-4 file  #表示把文件
file中的每一行上的第一个字段到第四个字段之间的所有字段萃取出来,此时共萃取出来
4个字段;字段之间使用的分割符是冒号;

 

5.2

cutsh2

(与
cutsh
的区别在于,自动计算出
file

column
数)

#! /bin/bash -x
var=2
A=$(awk -F '|' '{print NF;exit}' test.txt)	#(计算column数)
echo "There are" $A "column"
#while [ $var -le 4 ]; do
#while [ $var -lt 4 ]; do
#while [ $var -le 4 ]
while (($var <= $A ))
do
cut -d "|" -f $var-$A test.txt > cutout$var
var=$((var+1))
done


 
 

awk
的用法?


 

5.3

sortsh

#! /bin/sh
sort -d -k 2,2 -t/| -o timesort test.txt


 
sort
的用法?

总结:

·       

学习
sort

cut

awk
的用法

·       

学习
bash shell
的基本写法

·       

学习
while
语句

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file bash list input shell