shell命令(包括sed和awk的常用命令)

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

文中有哪里出现错误,欢迎指出来!

猜你喜欢

转载自blog.csdn.net/anluo233/article/details/129262868