shell脚本

bash shell是默认的bash,当然还有其他的shell, 就不介绍了。

#!/bin/bash
# 这是注释,可以写脚本功能,参数,版本,创作者之类的
# This is test.sh
echo "Hello, world!"
# 祈求代码之神护佑
a=$(date +%y%m%d);b=`who`;echo $a"\n"$b
touch $a.log
seq 12|while read idd; do (echo $idd;echo "over");done
who >test2
wc < test2
echo "The argument is:"$0
# $0是命令行参数,$1是文件名字
echo "The filename is:"$1
bash test.sh

正则表达式RE及三个相关命令

  1. grep
    逐行处理文本
grep patern file
# -v –invert-match:取没有匹配的行
# -w –word-regexp:只选择匹配上整个 words
# -i,–ignore-case:忽略Pattern 和文件内容的大小写
# -e :多个-e 可以用来描述多个不同的匹配模式 ;or
# -o :-n形式输出匹配内容
# -A :输出匹配行之后(after)的num行
# -B :输出匹配行之前(before)的num行
# -C NUM–context=NUM 表示前后各NUM行
# -c 输出计数后的几行
# -0 仅输入匹配的字符串而非匹配行
# -n –line-number 显示行号
# -f FILE ,–file=FILE 从FILE中获得匹配的数据
# --color=auto 很有用,你看的出来

grep的语法和用法

  1. sed
    处理、编辑文本文件
sed [OPTION] [-e] command1 [[-e command2] ... [-e commandn]]  [input-file]
sed [OPTION] -f script-file [input-file]
# -n   使用安静(silent) 模式。在一般 sed 的用法中,所有来自STDIN 的数据一般都会被列出
# 到屏幕上。但加上 -n 参数后,则只有经过sed 特殊处理的那一行( 或者动作) 才会被列出来。
# -e   直接在指令列模式上进行 sed 的动作编辑
# -f    直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的sed 动作
# -r   sed 的动作支持的是延伸型正则表达式的语法。( 预设是基础正则表达式语法)

操作:

  • p 打印
  • l 显示所有字符,包括控制字符(非打印字符)
  • d 删除
  • = 显示匹配行的行号

sed的语法与应用

  1. awk
    强大的文本处理语言,在处理文本之前先运行BEGIN的代码commands1,然后对文件每一行做相同的处理commands2,最后执行commands3的命令
awk -F 'seperator'  'BEGIN{commands1} {commands2} END{commands3}' filename
# -F 'seperator'
awk patern {action}
# 如果没有模式,则action应用到全部记录,如果没有action,则输出匹配全部记录。
# 默认情况下,每一个输入行都是一条记录,但用户可通过RS变量指定不同的分隔符进行分隔。

变量 说明

  • $0 当前行
  • $n 当前行第n列
  • NF 当前记录中的字段数
  • NR 当前记录数
  • FS 字段分隔符(默认是一个空格)
  • RS 记录分隔符(默认是一个换行符)
  • OFS 输出字段分隔符(默认是一个空格)
  • ORS 输出字段分隔符(默认是一个换行符)
  • ORSIGNORECASE 如果是真,则进行忽略大小写的匹配
    awd的语法与文本应用处理

你可能感兴趣的:(shell脚本)