1. 字符串如何大小写转换

str="This is a Bash Shell script."

1> tr方式

newstr=`tr '[A-Z]' '[a-z]' <<<"$str"`或者 newstr=$(echo $str |tr '[a-z]' '[A-Z]')

2> typeset

typeset -u VARIABLE (把VARIABLE的小写转换成大写)

typeset -l VARIABLE (把VARIABLE的大写转换成小写)

如:

[oracle@node3 ~]$ typeset -u str
[oracle@node3 ~]$ str="This is a Bash Shell script."
[oracle@node3 ~]$ echo $str
THIS IS A BASH SHELL SCRIPT.

2. 判断变量中是否包含某个字符串

str="this is a string"
[[ $str =~ "this" ]] && echo "\$str contains this"

3. 将文本文件的内容按行保存到数组中

#!/bin/bash
i=
while read line
do
   a[$i]="$line"
   i=$[$i+]
done < dept.txt
; i<; i++ ))
do
  echo "${a[$i]}"
done

注意:在这里就不要用 cat dept.txt |while read line了,因为管道的命令都是在子Shell中执行的,这意味着在子Shell中赋值的变量对父Shell是无效的。在本例中,该脚本无法读取赋给数组的值。

4. 昨天的日期

date -d "1 day ago" "+%Y-%m-%d"

date -d last-day +%Y-%m-%d

5. 指定日期的后一天

date -d "20150303 1 days" +%Y%m%d

6. awk将最后一行的每一列分行打印

awk 'END{for(i=1;i<=NF;i++){printf "%s\n",$i}}'

7. AWK去掉空格

1>    sub(/^[[:blank:]]*/,"",变量) 是去掉变量左边的空白符
           sub(/[[:blank:]]*$/,"",变量) 是去掉变量右边的空白符
           gsub(/[[:blank:]]*/,"",变量) 是去掉变量中所有的空白符

譬如: echo " hello world " | awk '{gsub(/[[:blank:]]*/,"",$0);print "|" $0 "|"}'

|helloworld|

2>    echo " hello world " | awk '{sub("^ *","");sub(" *$","");print "|" $0 "|"}'

|hello world|

8. shell中如何实现数值向上取整

a=1.1

   echo $a|awk '{print int($a)==$a?$a:int($a+1)}'

9. 如何显示Shell脚本的执行过程

1> sh -x 1.sh

2>

#!/bin/bash -x
word1=Hello
word2=World
echo $word1 $word2

执行结果如下:

[oracle@node1 ~]$ ./.sh   -->>注意执行的方式,如果是sh 1.sh则没有这种效果
+ word1=Hello
+ word2=World
+ echo Hello World
Hello World

3> 只希望一部分显示执行过程,可使用set -x 和set +x

[oracle@node1 ~]$ .sh
#!/bin/bash
set -x
word1=Hello
word2=World
set +x
echo $word1 $word2
[oracle@node1 ~]$ ./.sh
+ word1=Hello
+ word2=World
+ set +x
Hello World

10. > /dev/null 2>&1  

将标准输出和标准错误重定向到/dev/null中

11. 数组

$ fruits[]="Apple"
$ fruits[]="Grape"
$ fruits[]="Orange"
$ echo "${fruits[0]} ${fruits[1]} ${fruits[2]}"
Apple Grape Orange
$ fruits=("Apple" "Grape" "Orange")   -->> 如何对数组进行赋值
$ echo "${fruits[0]} ${fruits[1]} ${fruits[2]}"
Apple Grape Orange
$ echo "${#fruits[@]}"   -->> 如何获取数组的个数

$ echo "${fruits[@]}"   -->> 如何获取数组的值
Apple Grape Orange

12. 如何用grep去掉空格和注释

grep -Ev "^$|^#" db_install.rsp

13. 如何找出tkprof命令生成的outputfile中的select语句

awk 'BEGIN{i=0;j=0}{if($0~"select"){i=NR;j=NR;print "\t"}if($0~/^$/) j=NR;if(i==j) print $0 }' 1.txt

因为select语句没有写在一行,且select语句结束以后会有空行,所以解决的思路是打印select及select以下的行,直到空行。所以当碰到select语句的时候,将行值赋给i和j,当碰到空行时,将行数赋给j,这样j就发生了改变。判断是否打印所在行的值就看i和j是否相等。

这样打印出来的内容会有点难看,select和select语句之间没有空行,所以在碰到select的时候就打印一个空行。

注意:判断空行的写法/^$/,BEGIN{i=0;j=0}代表将i和j初始化为0,如果没有BEGIN语句,则处理每一行的时候i和j的值都会重置为0。

14. 在第三行行尾添加;号

sed -ie '3s/$/;/'

15. Shell中计算

num=$[$num+1]

注意中间不能有空格,不然会报以下错误

[root@mysql-slave1 ~]# num=
[root@mysql-slave1 ~]# num=$[$num+]
[root@mysql-slave1 ~]# echo $num

[root@mysql-slave1 ~]# num =$[$num+]
-bash: num: command not found
[root@mysql-slave1 ~]# num = $[$num+]
-bash: num: command not found

16. 如何去掉字符串中的空白字符

# echo " aa bb ccc "| tr -d  [:blank:]

aabbccc

17. 删除指定文件外的其它文件

ls |grep -v 2.sh |xargs rm -rf

18. 如何将每一行的数据拼凑成一行输出

awk 'BEGIN{T=""}{T=T","$1}END{print T}' host.txt

19. 如何删除一个变量中的空格和换行符

#!/bin/bash
output="    678
         "
echo $output
echo "$output"
output="$(echo  "${output}" | sed -e 'N;s/[\n[[:space:]]]*//g')"
echo "$output"

执行结果如下:


20. 如何查看一个字符串左侧有多少个0

[root@localhost ~]# file='00012hello'
[root@localhost ~]# *} |wc -L

在此基础上加1就可以了

Shell碎碎念的更多相关文章

  1. Linux碎碎念

    在学习Linux过程中,有许多有用的小技巧.如果放在纸质的笔记本上,平时查阅会相当不方便.现在以一种“碎碎念”的方式,汇集整理在此,目前还不是很多,但随着学习.工作的深入,后续会陆陆续续添加更多的小技 ...

  2. 一些关于Linux入侵应急响应的碎碎念

    近半年做了很多应急响应项目,针对黑客入侵.但疲于没有时间来总结一些常用的东西,寄希望用这篇博文分享一些安全工程师在处理应急响应时常见的套路,因为方面众多可能有些杂碎. 个人认为入侵响应的核心无外乎四个 ...

  3. 一个谷粉和3年的Google Reader重度使用者的碎碎念

    2013-03-14 上午看到Andy Rubin辞去Android业务主管职务.由Chrome及应用高级副总裁继任的新闻,还在想这会给Android带来什么,中午刷微博的时候就挨了当头一棒:Goog ...

  4. Jerry的碎碎念:SAPUI5, Angular, React和Vue

    去年我去一个国内客户现场时,曾经和他们IT部门的一位架构师聊到关于在SAP平台上进行UI应用的二次开发时,UI框架是选用UI5还是Vue这个话题. 我们代表SAP, 向客户推荐使用UI5是基于以下六点 ...

  5. Oracle碎碎念~2

    1. 如何查看表的列名及类型 SQL> select column_name,data_type,data_length from all_tab_columns where owner='SC ...

  6. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

  7. Python碎碎念

    1. 如何添加路径 主要有以下两种方式: 1> 临时的 import sys sys.path.append('C:\Users\Victor\Desktop') 2> 永久的 在Linu ...

  8. Oracle碎碎念~1

    1. 设置SQL*Plus提示符 SQL> set sqlprompt "_user'@'_connect_identifier>" SYS@orcl> 为了对所 ...

  9. Android编译过程中的碎碎念

    刷机不是用rom包吗?怎么可以使用fastboot flashall -w将*.img文件刷入呢? 在Mac上面可以参考这篇文章进行刷机.概括来说解释从官方下载rom包,解压后运行./flash-al ...

随机推荐

  1. 人工智能AI-机器视觉CV-数据挖掘DM-机器学习ML-神经网络-[资料集合贴]

    说明:这个贴用于收集笔者能力范围内收集收藏并认为有用的资料,方便各方参考,免去到处找寻之苦,提升信息的交叉引用价值.仅供参考,不作为必然的推荐倾向.如涉及版权等问题请相关人员联系笔者,谢谢. |博客| ...

  2. php 总结第一篇(望大家补充!谢谢)

    /* 数组的常用函数 * * 数组的排序函数 *   sort() *   rsort() *   usort() *   asort() *   arsort() *   uasort() *   ...

  3. 解决Office互操作错误&quot;检索COML类工厂中 CLSID为 {xxx}的组件时失败,原因是出现以下错误: 80070005&quot;

    Excel为例(其他如Word也适用)文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是 ...

  4. 我是一只IT小小鸟读后感

    当老师推荐我读这本书的时候,并不想看,因为我不喜欢机械的东西,然而阅读几章后,对这本书有了其他看法.不知不觉竟把它看完!看完这本<我是一只IT小小鸟>,我感触很深. 在书中我明白了很多,大 ...

  5. 关于margin的问题

    昨晚是第一天,现在来说说margin的这个存在的问题吧, 嗯,就是当你碰到 <div class="max-box"> <div class="box1 ...

  6. Xcode中给控件添加颜色时自动显示出颜色

    在iOS开发中,给一些控件设置颜色的时候,设置完不能立马看到颜色.必须要运行程序之后才能看到设置的颜色,如果颜色有偏差再回代码改参数,然后再运行看颜色很是麻烦.令人高兴得是Xcode有很多功能强大插件 ...

  7. PHP 表单验证

    1. 验证文本框是否有内容且不能为空 <?php if (! (filter_has_var(INPUT_POST, 'flavor') && (strlen(filter_in ...

  8. NGUI Atlas

    打开 Atlas Maker:NGUI -> Open -> Atlas Maker 新建一个 "Icon Atlas" 生成3个东西:

  9. 测试 Mono 安装

    测试 Mono 安装 为了测试核心编译器(mcs)和运行时(mono),应该创建一个简单的程序并编译它.可以在喜欢的任何文本编辑器中创建程序.这里采用一种快速而简陋的方法创建该文件(虽然没有任何格式化 ...

  10. [BZOJ3504][CQOI2014]危桥(最大流)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3504 分析:很容易想到最大流,但如果S-a1,S-b1,a2-T,b2-T这样跑S-T最大流判 ...