网站备案帐号密码,微信服务号怎么做商城,百度博客网站模板下载,如何开通个人网站字符操作字符串的长度获取字符串中某些字符的个数统计单词的个数bash提供的数组数据结构它是以数字为下标的和C语言从0开始的下一样awk里面的数组取子串匹配求子串sed有按行打印的功能记得用tr把空格换为行号tr来取子串head和tail查询字串子串替换tac 会将文本的内容倒置显示正…字符操作字符串的长度获取字符串中某些字符的个数统计单词的个数bash提供的数组数据结构它是以数字为下标的和C语言从0开始的下一样awk里面的数组取子串匹配求子串sed有按行打印的功能记得用tr把空格换为行号tr来取子串head和tail查询字串子串替换tac 会将文本的内容倒置显示正如名字和 cat 相反一样功能和cat也是相反的插入子串删除子串子串比较使用test命令子串排序进制转换正则表达式处理urlsed 和 awk 匹配文件中的行处理格式化的文本文件关联操作 字符操作
1.字符串的长度
* $ varget the length of me
$ echo ${#var}
20
* $ expr length $var #注意这里是双引号
20
* $ echo $var | awk {printf(%d,length($0))}
20
* $ echo -n $var | wc -c # echo每次输出时会自动的输出换行符-n表示部署出那一个换行符
202.获取字符串中某些字符的个数
* $ echo $var | tr -cd g | wc -c
2
$ echo -n $var | sed s/[^g]//g | wc -c
2
$ echo -n $var | sed s/[^gt]//g | wc -c
5
3.统计单词的个数
* $ echo $var | wc -w
4.bash提供的数组数据结构它是以数字为下标的和C语言从0开始的下一样
* $ varget length of me
$ var_arr($var) #这里把var字符串以数组的形式存放到var_arr中默认以空格分割
$ echo ${var_arr[0]} ${var_arr[1]} ${var_arr[2]} ${var_arr[3]} ${var_arr[4]}
get the length of me
$ echo ${var_arr[]} #表示整个字符串
get the length of me
$ echo ${var_arr[*]} #*表示整个字符串
get the length of me
$ echo ${#var_arr[]}#求得整个字符数组的元素个数
5
$ echo ${#var_arr[0]}#求得某个字符串的字符个数
3
$ var_arr[5]new_element #直接给数组元素赋值
$ echo ${var_arr[]}
get the length of me new_element
$ echo ${#var_arr[]}
6
* $ for i in $var; do echo $i ; done;
get the length of me
5.awk里面的数组
* echo $var | awk {printf(%d %s\n,split($0,var_arr, ),var_arr[1])}
split把字符串按照空格分割存放到var_arr中并返回数组的长度注意这里第一个元素的下标不是0而是1。
* awk把一行按照空格分成若干个域并用$1,$2,$3...来引用$0表示整行,NF表示该行域的总数。
* echo $var | awk {split($0,var_arr, );for(i in var_arr) printf(%s ,var_arr[i]);}
这里的for循环中循环变量为下标
* echo $var | awk {split($0,var_arr, );delete var_arr[1]}
删除第一个数组元素6.取子串
* $ varget length of me
$ echo ${var:0:3}
get
$ echo ${var(-2)} #反方向
me
$ echo expr substr $var 5 3
the
$ echo $var | awk {printf(%s\n,substr($0,9,6))} #从第九个位置开始选取6个字符
length
* 使用cut取子串
$ echo $var | cut -d -f 5
me
* $ echo $var | sed s/ [a-z]*//g
get
删除空格字母串
$ echo $var | sed s/[a-z]* //g
me
删除字母串空格7.匹配求子串
* $ echo ${var%% *} #从最右边开始删除最左边空格右边的所有字符
get
* $ echo ${var% *} #从最右边开始删除第一个空格右边的所有字符
get the length of
* $ echo ${var##* } #从最左边开始删除最右边空格左边的所有字符
me
* $ echo ${var#* } #从最左边开始删除第一个空格左边的所有字符
the length of me8.sed有按行打印的功能记得用tr把空格换为行号
* $ echo $var | tr \n | sed -n 5p
me
* $ echo $var | tr \n | sed -n 1p
get
9.tr来取子串
* $ echo $var | tr -d
getthelengthofme
* $ echo $var | tr -cd [a-z] #仅仅保留字母
getthelengthofme
10.head和tail
* $ echo abcdefghijk | head -c 4
abcd
* $ echo abcdefghijk | tail -c 4
hijk
11.查询字串
* $ varget the length of me
$ expr index $var t
3
* $ echo $var | awk {printf(%d\n,match($0,the));}
5
12.子串替换
* $ varget the length of me
$ echo ${var/ /_} #把第一个空格替换成下划线
get_the length of me
$ echo ${var// /_} #把所有的空格都替换成下划线
get_the_length_of_me
$ echo $var | awk {sub( ,_,$0);printf(%s\n,$0);}
get_the length of me
$ echo $var | awk {gsub( ,_,$0);printf(%s\n,$0);}
get_the_length_of_me
$ echo $var | sed s/ /_/
get_the length of me
$ echo $var | tr _
get_the_length_of_me
$ echo $var | tr [a-z] [A-Z]
GET THE LENGTH OF ME
13.tac 会将文本的内容倒置显示正如名字和 cat 相反一样功能和cat也是相反的
14.插入子串
* $ varget the length of me
$ echo ${var/ /_ } #在第一个空格前加上_
get_ the length of me
$ echo ${var// /_ } #在所有的空格前都加上_
get_ the_ length_ of_ me
$ echo ${var/ / _}
get _the length of me
$ echo ${var// / _} #在所有的空格之后都加上_
get _the _length _of _me* $ echo $var | sed s//\1_/ #在第一个空格之后加上_
get _the length of me
$ echo $var | sed s//\1_/g
get _the _length _of _me
$ echo $var | sed s/[a−z]∗ [a−z]∗/\2 \1/ #调换get和the的位置
the get length of me
15.删除子串
* $ varget the length of me
$ echo ${var// /}
getthelengthofme* $ echo $var | awk {gsub( ,,$0);printf(%s,$0);}
getthelengthofme* $ echo $var | sed s/ //g
getthelengthofme* $ echo $var | tr -d
getthelengthofme
16.子串比较使用test命令
17.子串排序
* $ echo $var | tr \n | sort #正排序
get
length
me
of
the
$ echo $var | tr \n | sort -r
the
of
me
length
get
* $ cat data.txt | tr \n | sort -n
18.进制转换
* $ echo ibase10;obase16;10 | bc
A
19.正则表达式处理url
* $ urlftp://anonymous:ftpmirror.lzu.edu.cn/software/scim-1.4.7.tar.gz
$ echo $url | grep ftp://[a-z]*:[a-z]*[a-z0-9\./-]* #判断url的有效性
ftp://anonymous:ftpmirror.lzu.edu.cn/software/scim-1.4.7.tar.gz
* $ echo $url $(expr index $url :) | awk {printf(%s\n,substr($1,1,$2-1));} #截取协议
ftp
$ echo ${url%%:*}
ftp
* $ echo ${url##*} | cut -d / -f 1 #截取域名
mirror.lzu.edu.cn
$ tmp${url##*};echo ${tmp%%/*}
mirror.lzu.edu.cn
* $ tmp${url##*};echo ${tmp%/*} #截取路径
mirror.lzu.edu.cn/software
* $ echo ${url##*/} #截取文件名
scim-1.4.7.tar.gz
* $ echo $url | sed s/.*[0-9].//g #截取文件类型
tar.gz20.sed 和 awk 匹配文件中的行
* $ sed -n 7,9p README #打印README7-9行
21.处理格式化的文本
* $ cat /etc/passwd | cut -d : -f 1,5 #截取/etc/passwd文件中的用户名和组
* $ cat /etc/group | cut -d : -f 1,3 #截取/etc/group文件中的组名和组id
22.文件关联操作
* $ join -o 1.1,2.1 -t: -1 4 -2 3 /etc/passwd /etc/group
#join命令用来连接两个文件类似于数据库中两个表的连接。-t指定分隔符
-1 4 -2 3 指定按照第一个文件的第四列和第二个文件的第三列即组ID进行
连接-o 1.1 2.1表示仅仅输出第一个文件的第一列和第二个文件的第一列