对于文本操作,tr命令的作用很大。今天对tr功能进行初步学习。
1、 tr的工作原理
tr命令不接受指定的文件参数,而只是对标准输入进行翻译
tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符
2、简单的替换功能
tr 1 2 < ./material/20150804tr_height.txt tr ' ' '11' < ./material/20150804tr_height.txt
3、对一系列字符进行处理
tr 'a-z' 'A-Z' < ./material/20150804tr_word.txt tr '1-8' '[A*]' < ./material/20150804tr_number.txt#重复指定的字符到与 SET1 相同长度为止 tr '1-8' '[A*5]B' < ./material/20150804tr_number.txt# [CHAR*REPEAT],将CHAR重复REPEAT次数
在练习中成长~
#!/bin/bash echo "this is test for command 'tr'" ######################################## folder="./material" if [ ! -d "$folder" ];then mkdir "$folder" fi echo "1.79 1.83" > ./material/20150804tr_height.txt echo "1.65 1.59" >> ./material/20150804tr_height.txt echo "AbcDe" > ./material/20150804tr_word.txt echo "1234567890" > ./material/20150804tr_number.txt echo "file writing finished" ######################################## tr 1 2 < ./material/20150804tr_height.txt tr ' ' '11' < ./material/20150804tr_height.txt tr 'a-z' 'A-Z' < ./material/20150804tr_word.txt tr '1-8' '[**]' < ./material/20150804tr_number.txt tr '1-8' '[A*5]B' < ./material/20150804tr_number.txt
补充知识:
1、将内容写入文件
两个管道命令就可以实现:
1) > 符号表示将信息写入文件中
2) >> 符号表示在已有的文件中添加信息
2、文件使用git进行管理,我不希望git把我的文件夹material也提交了,于是使用.gitignore文件
在仓库目录下新建一个名为.gitignore的文件
.gitignore文件对其所在的目录及所在目录的全部子目录均有效。通过将.gitignore文件添加到仓库,其他开发者更新该文件到本地仓库,以共享同一套忽略规则。
【例子】
# 忽略*.o和*.a文件
*.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg
3、判断文件或者文件夹是否存在或者具有权限
#shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/myfolder" ]; then mkdir /myfolder fi #shell判断文件,目录是否存在或者具有权限 folder="/var/www/" file="/var/www/log" # -x 参数判断 $folder 是否存在并且是否具有可执行权限 if [ ! -x "$folder"]; then mkdir "$folder" fi # -d 参数判断 $folder 是否存在 if [ ! -d "$folder"]; then mkdir "$folder" fi # -f 参数判断 $file 是否存在 if [ ! -f "$file" ]; then touch "$file" fi # -n 判断一个变量是否有值 if [ ! -n "$var" ]; then echo "$var is empty" exit 0 fi # 判断两个变量是否相等 if [ "$var1" = "$var2" ]; then echo '$var1 eq $var2' else echo '$var1 not eq $var2' fi