Linux常用命令整理(三)

  • 2015-05-15
  • 95
  • 1
  • 0

然后,总结的是命令处理和文本处理。

命令处理


 

command ls                         # 忽略 alias 直接执行程序或者内建命令 ls
builtin cd                         # 忽略 alias 直接运行内建的 cd 命令
enable                             # 列出所有 bash 内置命令,或禁止某命令
help {builtin_command}             # 查看内置命令的帮助(仅限 bash 内置命令)
eval $script                       # 对 script 变量中的字符串求值(执行)

 

输入/输出/重定向


 

cmd1 | cmd2                        # 管道,cmd1 的标准输出接到 cmd2 的标准输入
< file # 将文件内容重定向为命令的标准输入 > file                             # 将命令的标准输出重定向到文件,会覆盖文件
>> file                            # 将命令的标准输出重定向到文件,追加不覆盖
>| file                            # 强制输出到文件,即便设置过:set -o noclobber
n>| file                           # 强制将文件描述符 n的输出重定向到文件
<> file                            # 同时使用该文件作为标准输入和标准输出
n<> file                           # 同时使用文件作为文件描述符 n 的输出和输入
n> file                            # 重定向文件描述符 n 的输出到文件
n< file # 重定向文件描述符 n 的输入为文件内容 n>&                                # 将标准输出 dup/合并 到文件描述符 n
n<& # 将标准输入 dump/合并 定向为描述符 n n>&m                               # 文件描述符 n 被作为描述符 m 的副本,输出用
n<&m # 文件描述符 n 被作为描述符 m 的副本,输入用 &>file                             # 将标准输出和标准错误重定向到文件
<&- # 关闭标准输入 >&-                                # 关闭标准输出
n>&-                               # 关闭作为输出的文件描述符 n
n<&-                               # 关闭作为输入的文件描述符 n
diff <(cmd1) <(cmd2)               # 比较两个命令的输出            # 比较两个命令的输出

 

文本处理 – cut


 

cut -c 1-16                        # 截取每行头16个字符
cut -c 1-16 file                   # 截取指定文件中每行头 16个字符
cut -c3-                           # 截取每行从第三个字符开始到行末的内容
cut -d':' -f5                      # 截取用冒号分隔的第五列内容
cut -d';' -f2,10                   # 截取用分号分隔的第二和第十列内容
cut -d' ' -f3-7                    # 截取空格分隔的三到七列
echo "hello" | cut -c1-3           # 显示 hel
echo "hello sir" | cut -d' ' -f2   # 显示 sir
ps | tr -s " " | cut -d " " -f 2,3,4  # cut 搭配 tr 压缩字符

 

文本处理 – awk/sed


 

awk '{print $5}' file              # 打印文件中以空格分隔的第五列
awk -F ',' '{print $5}' file       # 打印文件中以逗号分隔的第五列
awk '/str/ {print $2}' file        # 打印文件中包含 str 的所有行的第二列
awk -F ',' '{print $NF}' file      # 打印逗号分隔的文件中的每行最后一列 
awk '{s+=$1} END {print s}' file   # 计算所有第一列的合
awk 'NR%3==1' file                 # 从第一行开始,每隔三行打印一行

sed 's/find/replace/' file         # 替换文件中首次出现的字符串并输出结果 
sed '10s/find/replace/' file       # 替换文件第 10 行内容
sed '10,20s/find/replace/' file    # 替换文件中 10-20 行内容
sed -r 's/regex/replace/g' file    # 替换文件中所有出现的字符串
sed -i 's/find/replace/g' file     # 替换文件中所有出现的字符并且覆盖文件
sed '/line/s/find/replace/' file   # 先搜索行特征再执行替换
sed -e 's/f/r/' -e 's/f/r' file    # 执行多次替换
sed 's#find#replace#' file         # 使用 # 替换 / 来避免 pattern 中有斜杆
sed -i -r 's/^\s+//g' file         # 删除文件每行头部空格
sed '/^$/d' file                   # 删除文件空行并打印
sed -i 's/\s\+$//' file            # 删除文件每行末尾多余空格
sed -n '2p' file                   # 打印文件第二行
sed -n '2,5p' file                 # 打印文件第二到第五行

 

排序 – sort


 

sort file                          # 排序文件
sort -r file                       # 反向排序(降序)
sort -n file                       # 使用数字而不是字符串进行比较
sort -t: -k 3n /etc/passwd         # 按 passwd 文件的第三列进行排序
sort -u file                       # 去重排序

去重 – uniq


 

# 检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的,所以一般需要配合sort使用
uniq -c             # 在每行前加上,表示相应行目出现次数的前缀编号
uniq -d             # 只显示重复的行
uniq -i             # 检查的时候不区分大小写
uniq -u             # 只显示唯一行

评论