shell脚本常用使用方法:
1.变量赋值:使用“=”符号将值分配给变量。例如:
name=`John`
2.输出:使用“echo”命令输出文本或变量的值。例如:
echo "Hello, $name"
3.输入:使用“read”命令从用户输入读取数据并将其分配给变量。例如:
read -p "What is your name? " name
4.管道:使用管道“|”将一个命令的输出作为另一个命令的输入。例如:
ls -l | grep "txt"
5.重定向:使用重定向符号将输出重定向到文件或从文件中读取输入。例如:
echo "Hello" > greeting.txt 或 sort < input.txt
6.条件语句:使用条件语句(if-then-else)来根据条件执行不同的命令。例如:
if [[ $age -gt 18 ]]; then
echo "You are an adult."
else
echo "You are a child."
fi
7.循环:使用循环(for或while)来重复执行一组命令。例如:
for i in {1..5}; do
echo $i
done
while true; do
echo "Hello"
done
8.函数:使用函数将代码块组织成可重用的块。例如:
function say_hello {
echo "Hello, $1!"
}
say_hello "World"
一些shell脚本的高级使用方法:
1.命令替换:使用反引号()或$()将一个命令嵌入到另一个命令中,将其结果作为命令行参数。例如:
ls -l $(which bash)`
2.处理命令行选项和参数:使用getopts命令来处理命令行选项和参数,这样可以轻松地解析和验证命令行输入。例如:
while getopts ":a:b:" opt; do
case $opt in
a) arg1="$OPTARG";;
b) arg2="$OPTARG";;
\?) echo "Invalid option -$OPTARG" >&2;;
:) echo "Option -$OPTARG requires an argument." >&2;;
esac
done
3.函数:使用函数可以将代码组织成可重用的块。例如:
while getopts ":a:b:" opt; do
case $opt in
a) arg1="$OPTARG";;
b) arg2="$OPTARG";;
\?) echo "Invalid option -$OPTARG" >&2;;
:) echo "Option -$OPTARG requires an argument." >&2;;
esac
done
4.数组:使用数组可以存储和操作一组数据。例如:
array=(apple banana cherry)
echo ${array[0]} # 输出 "apple"
echo ${array[@]} # 输出 "apple banana cherry"
5.控制流:使用控制流语句可以根据条件执行代码块,循环执行代码块等。例如:
if [[ $1 -gt 10 ]]; then
echo "$1 is greater than 10."
else
echo "$1 is less than or equal to 10."
fi
for i in {1..10}; do
echo $i
done
while true; do
echo "Hello"
done
sed和awk的用法
sed和awk是两个强大的文本处理工具,常用于命令行环境下对文本文件进行编辑和处理。下面是它们的基本使用方法
sed
sed是流式文本编辑器,它按照行来处理文本数据,并且可以实现各种文本编辑功能,如替换、删除、插入、打印等。
基本语法:
sed [options] 'command' file(s)
常用选项:
-i 直接修改文件内容(常用)
-n 只打印经过处理的文本(常用)
-e 允许多条命令同时执行
-r 使用正则表达式
-f 从文件中读取sed命令
常用命令:
s/old/new/g 替换文本
d 删除匹配的文本
p 打印匹配的文本
a 在匹配行之后添加文本
i 在匹配行之前插入文本
r 从文件中读取文本并插入到匹配行之后
示例:
- 将文件中的"apple"替换为"orange":
sed -i 's/apple/orange/g' file.txt
- 打印文件中包含"hello"的行:
sed -n '/hello/p' file.txt
- 删除文件中所有以"#"开头的行:
sed -i '/^#/d' file.txt
- 删除文件中所有以"#"结尾的行:
sed -i '/#$/d' file.txt
- 从文件中删除所有空行:
sed -i '/^$/d' file.txt
- 将所有文本转换成大写:
sed 's/.*/\U&/' file.txt
- 在文件头部插入一行文本:
sed -i '1i This is a header line' file.txt
- 删除文件中所有的注释行(以"#"开头的行):
sed -i '/^#/d' file.txt
- 将文件中以逗号分隔的第2和第3列交换位置:
sed -i 's/\([^,]*\),\([^,]*\)/\2,\1/' file.txt
awk常使用方法
awk是一种文本处理语言,它可以对数据进行过滤、排序、计算等操作,并且可以输出格式化的结果。
基本语法:
awk '{pattern + action}' file(s)
常用选项:
-F 指定分隔符
-v 定义变量
常用命令:
$0 表示整行文本
$n 表示第n个字段(默认使用空格作为分隔符)
print 打印输出结果
if/else 条件语句
for/while 循环语句
示例:
- 打印文件中第2个字段和第4个字段:
awk '{print $2,$4}' file.txt
- 计算文件中第3个字段的和:
awk '{sum += $3} END {print sum}' file.txt
- 根据分隔符":"将文件中的行反转:
awk -F':' '{for(i=NF;i>0;i--) printf("%s ",$i); print ""}' file.txt
- 按照第3列对文件进行排序:
awk '{print $0 | "sort -k3"}' file.txt
- 在第2列前添加序号:
awk '{print NR " " $0}' file.txt
- 将文件中的数字相加,并计算平均值:
awk '{sum += $1} END {print "Sum=" sum ", Avg=" sum/NR}' file.txt
- 打印文件中长度大于10的行:
awk 'length > 10' file.txt
- 将文件中的"yes"替换为"no":
awk '{gsub(/yes/, "no"); print}' file.txt
文中有哪里出现错误,欢迎指出来!