常用命令--文本内容

包括文本内容查看及过滤操作等内容

cat

cat [OPTION]... [FILE]...
把档案串连接后传到基本输出

-b:显示行号,空行不计数,效果同nl
-c:仅显示行中指定范围的字符
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
-f:显示指定字段的内容
-n:显示行号
--complement:补足被选择的字节、字符或字段
--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符
-A:显示所有,结尾为$

1
2
3
4
cat -n textfile1 > textfile2    			# 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat > file1 # 回车后写入内容,最后空行按`ctrl+d`或**.**结束
cat > file2 < /etc/issue # 将issue的内容写入file2中
cat -b file3 | grep -Ev '^[[:space:]]$' # 每行前加行号,并把空白行去掉

nl

nl FILE
显示文件内容及行号,默认空行不加行号

more

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]
以全屏幕的方式按页显示文本文件的内容

-<数字>:指定每屏显示的行数
-d:显示“[press space to continue,’q’ to quit.]”和“[Press ‘h’ for instructions]”
-c:不进行滚屏操作。每次刷新这个屏幕
-s:将多个空行压缩成一行显示
-u:禁止下划线; +<数字>:从指定数字的行开始显示。

1
more -c -10 install.log     # 每10行显示一次,而且在显示之前先清屏

less

cat [OPTION]... [FILE]...
浏览文字档案的内容

-e:文件内容显示完毕后,自动退出
-f:强制显示文件
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度
-l:搜索时忽略大小写的差异
-N:每一行行首显示行号
-s:将连续多个空行压缩成一行显示
-S:在单行显示较长的内容,而不换行显示
-x<数字>:将TAB字符显示为指定个数的空格字符。

显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容

-n<数字>:指定显示头部内容的行数
-c<字符数>:指定显示头部内容的字符数
-v:总是显示文件名的头信息
-q:不显示文件名的头信息。

1
2
head -n 5 -v install.log    # 显示前5行,可写成 head -5 同时显示文件头信息  
head -n -5 /etc/passwd # 显示除最后5行外的内容

tail

tail [OPTION]... [FILE]...
默认在屏幕上显示指定文件的末尾10行

-n<数字>:输出文件的尾部N(N位数字)行内容
-f:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效
-c:输出文件尾部的N(N为整数)个字节内容
-F:与选项“-follow=name”和“–retry”连用时功能相同
–pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出
-q:当有多个文件参数时,不输出各个文件名
-s<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数
-v:当有多个文件参数时,总是输出各个文件名;

1
2
3
4
tail -1 file            # 显示最后一行
tail -n +20 file # 显示文件file的内容,从第20行至文件末尾
tail -c 10 file # 显示文件file的最后10个字符
tail -f /etc/passwd # 查看文件尾部,不退出,等待显示后续追加至此文件的新内容

wc

wc [OPTION]... [FILE]...
Word Count 统计文本行,列,字数

-c:bytes: 只显示Bytes数
-l:lines: 只显示列数
-w:words: 只显示字数

1
2
wc -l /etc/passwd
cat /etc/passwd | wc -w

cut

cut OPTION... [FILE]...

-d CHAR:指定分隔符
-f FIELD:选出指定字段

  • #:指定字段
  • m-n:从第m到n的字段
  • m,n,x:离散多个字段
  • m-:从第m字段到最后
1
cut -d: -f 2-4 /etc/passwd      # 以:分隔取2到4字段数据

sort

sort [OPTION]... [FILE]...

-n:基于数值大小排序
-t CHAR:指定分隔符
-k #:用于排序的字段,与-t一起使用
-r:逆序
-f:忽略大小写
-u:重复且连续的行只保留一份

1
sort -t: -k 3 -r /etc/passwd    # 用:分隔以第3字段逆序排

uniq

uniq [OPTION]... [INPUT [OUTPUT]]

-c:统计每行的重复次数
-u:显示没有重复过的行
-d:显示重复过和行

1
cut -d:  -f7 /etc/passwd | uniq -c   # 以:分割取第7字段不重复的内容出现次数

tr

tr [-cdst][第一字符集][第二字符集]
translate character 标准输入设备读取数据,转换或删除字符,输出到标准输出设备

-c:取代所有不属于第一字符集的字符
-d:删除所有属于第一字符集的字符
-s:把连续重复的字符以单独一个字符表示
-t:先删除第一字符集较第二字符集多出的字符

1
2
3
4
5
6
7
echo "HELLO WORLD" | tr 'A-Z' 'a-z'             # 转换大写到小字,等效`tr '[:upper:]' '[:lower:]'`  
echo "hello 123 world 456" | tr -dc '0-9' # 删除非数字字符
cat text | tr '\t' ' ' # 将制表符转换为空格
echo "thisss is a text linnne." | tr -s ' sn' # this is a text line. 删除指定连续重复的字符
cat file | tr -s "\r" "\n" > new_file # 删除Windows文件“造成”的'^M'字符
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs # 生成随机码
echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo \$[ $(tr '\n' '+') 0 ] # 数字相加操作

tee

tee [OPTION]... FILE...
数据重定向到给定文件和屏幕上

-a:向文件中重定向时使用追加模式
-i:忽略中断(interrupt)信号

1
ls | tee ls.tee | cat -n