[命令] Linux tr 命令 (内容替换)

内容一:tr 命令的简介

1.1 tr 命令的格式

# tr <option> <section 1> <sectiong 2>

1.2 tr 命令的原理

将 <section 1> 里的内容替换成 <section 2> 里的内容

内容二:tr 命令的选项

1) -c 或者 –complement 改变除了某内容外的所有内容
2) -d 或者 –delete 删除某内容
3) -s 或者 –squeeze-repeats 将相临重复的某个字符缩减成 1 个
4) -t 或者 –truncate-set1 将 <section 1> 里的内容缩减成和 <section 2> 里的内容一样长

内容三:tr 命令的参数

1) \ 反斜杠
2) \b 退格
3) \f 换页
4) \n 换行
5) \r 回车
6) \t 水平制表符
7) \v 垂直制表符
8) <character 1>-<character 2> 从某个字符到另 1 个字符,例如:a-z、a-Z、0-9
9) [<character>*] 在 <section 2> 中可用,<character> 会复制得和 <section 1> 中一样长
10) [<character>*<frequency>] 将 <character> 复制 <frequency> 次,若以 0 开头,则视为八进制
11 [:alnum:] 所有字母和数字
12 [:alpha:] 所有字母
13 [:blank:] 所有呈水平排列的空白字符
14 [:cntrl:] 所有控制字符
15 [:digit:] 所有数字
16 [:graph:] 所有可打印字符,但不包括空格
17 [:lower:] 所有小写字母
18 [:print:] 所有可打印字符,包括空格
19 [:punct:] 所有标点字符
20 [:space:] 所有呈水平或垂直排列的空白字符
21 [:upper:] 所有大写字母
22 [:xdigit:] 所有十六进制数
23 [=字符=] 所有和指定字符相等的字符

内容三:tr 命令的案例

3.1 案例一:替换某内容外的所有内容

# echo 'zmyb' | tr -c zmy a
zmyaa

(补充:这里以将内容 zmyb 中 zmy 以外的内容替换成内容 a 为例)

(注意:zmyb 后面还有一个结尾符号,所以结果会多 1 个内容 a)

3.2 案例二:删除某内容

# echo 'zmy' | tr -d m
zy

(补充:这里以删除内容 zmy 中的内容 m 为例)

3.3 案例三:将相临重复的某个字符缩减成 1 个

# echo zmmy | tr -s m
zmy

(补充:这里以将内容 zmmy 中多个字符 m 压缩成 1 个为例)

3.4 案例四:替换字符,并将要匹配的内容缩减成和要替换的内容一样长

如果是正常情况:

zhumingyu@laptop:~/Test> echo abeabe | tr ab c
ccecce

(补充:这里以将内容 abeabe 中的内容 ab 替换成内容 c 为例)

如果是缩减的情况

zhumingyu@laptop:~/Test> echo abeabe | tr -t ab c
cbecbe

(补充:这里以将内容 abeabe 中的内容 a 替换成内容 c 为例)

(注意:这里 tr -t ab c 中内容 c 是 1 个字符,所以内容 ab 会被压缩成 1 个字符 a)

[内容] Linux 数值计算

内容一:数值计算符号

1) + ,加法
2) – ,减法
3) * ,乘法
4) / ,除法
5) % ,求余

内容二:数值计算的方法

2.1 方法一:使用 expr 命令

# a=1
# b=2
# c=`expr $a + $b`
# echo $c
3

或者:

# a=1
# b=2
# c=$(expr $a + $b)
# echo $c
3

或者:

# a=1
# b=2
# c=$[`expr $a + $b`]
# echo $c
3

(补充:这里以 1 加 2 等于 3 为例)

2.2 方法二:使用 let 命令

# a=1
# b=2
# let c=b/c
# echo $c
2

(补充:这里以 2 除以 1 等于 2 为例)

2.3 方法三:使用双括号 (())

# a=1
# b=2
# c=$(($a * $b))
# echo $c
2

(补充:这里以 1 乘以 2 等于 2 为例)

[内容] Linux while 循环

案例一:无限循环

#!/bin/bash

while ((1));
do
        sleep 1
        echo "infinite loop"
done

或者:

#!/bin/bash

while :
do
        sleep 1
        echo "infinite loop"
done

案例二:从 1 计数到 5

#!/bin/bash

i=1;n=5
while ((i <= n))
do

        echo $i
        let i++

done

或者:

#!/bin/bash

i=1;n=5
while [[ $i -le $n ]]
do

        echo $i
        let i++

done

案例三:从 1 加到 5

#!/bin/bash

i=1
while ((i <= 5));
do

        let sum=$sum+$i
        let i++

done

echo $sum

或者:

#!/bin/bash

i=1
while [[ $i -le 5 ]];
do

        let sum=$sum+$i
        let i++

done

echo $sum

案例四:输入多个数字,通过同时按下 “Ctrl” 键和 “D” 键结束输入,并将多个数字相加

#!/bin/bash

sum=0
echo "Please input number, press "ctrl" and "d" at the same time to end the input"

while read num
do
        let sum=$sum+$num
done

echo $sum

案例五:阅读文件

#!/bin/bash

while read line
do
        echo $line

done < test.txt

或者:

#!/bin/bash

cat test.txt | {
while read line
do
        echo $line

done }

或者:

#!/bin/bash

cat test.txt | while read line
do
        echo $line

done

(补充:这里以阅读 test.txt 文件为例)

[命令] Linux 命令 eval (执行变量里的命令或实现指针)

内容一:eval 命令的作用

对将要执行的命令进行 2 次扫描,第 1 次扫描时把扫描的内容替换成命令,第 2 次扫描时执行扫描到的命令

内容二:eval 直接执行命令的案例

2.1 设置变量

# url=eternalcenter.com

(补充:这里以将内容 eternalcenter.com 赋值给变量 url 为例)

2.2 显示变量里内容

# echo $url
eternalcenter.com

或者:

# eval echo $url
eternalcenter.com

(补充:这里以显示变量 url 里的内容 eternalcenter.com 为例)

内容三:eval 将变量转换成命令后执行的案例

3.1 将命令设置成变量

# command=pwd

(补充:这里以将命令 pwd 赋值给变量 command 为例)

3.2 显示变量里的命令

# echo $command
pwd

(补充:这里以显示变量 command 里的 pwd 命令为例)

3.3 执行变量里的命令

# eval $command
/root

(补充:这里以执行变量 command 里的 pwd 命令为例)

内容四:eval 显示脚本里最后 1 个位置变量的内容

4.1 创建显示最后 1 个位置变量的脚本

# vim test.sh

创建以下内容:

#!/bin/bash
eval echo \$$#

(补充:这里创建名为 test.sh 的脚本为例)

4.2 带位置变量执行脚本

# . test.txt a b c d e
e

(补充:这里执行名为 test.sh 的脚本并附带 a b c d e 5 个位置变量为例)

内容五:eval 实现指针

5.1 设置变量

# url=eternalcenter.com

(补充:这里以将内容 eternalcenter.com 赋值给变量 url 为例)

5.2 设置指针

# pointer=url

(补充:这里以让指针 pointer 指向 url 变量为例)

5.3 显示指针指向的变量

# echo $pointer
url

(补充:这里以显示指针 pointer 指向的变量 url 为例)

5.4 显示指针最终指向的内容

# eval echo \$$pointer
eternalcenter.com

(补充:这里以显示指针 pointer 指向的最终内容 eternalcenter.com 为例)