记录一些比较易忘linux命令
cut
从一个文本文件或者文本流中提取文本列。
命令用法:
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d delim][-s][file ...]
l 上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
l list表示-b、-c、-f操作范围,-n常常表示具体数字;
l file表示的自然是要操作的文本文件的名称;
l delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
l -s表示去掉那些不含指定分隔符的行(这样有利于去掉注释和标题)
| --output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入的分界符
N 只有第N项
N- 从第N项一直到行尾
N-M 从第N项到第M项(包括M)
-M 从一行的开始到第M项(包括M)
典型用法
cut -c3 filename
cut -c3- filename
cut -b3,5 filename
... 其中 -c表示字符 一个中文汉字可以是一个字符,但不会只有一个字节. 另外 列数从1开始计数
cut -f3- filename
cut -d\| -f1 filename
cut -d: -f1 /etc/passwd
cut -d: -f2,5-7 /etc/passwd
cut -d' ' -f1-3 /etc/passwd
cut在处理连续空格时不够智能,需要借助其它工具完成
tr
命令用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
-c, -C, --complement 首先补足SET1
-d, --delete 删除匹配SET1 的内容,并不作替换
-s, --squeeze-repeats 如果匹配于SET1 的字符在输入序列中存在连续的
重复,在替换时会被统一缩为一个字符的长度
-t, --truncate-set1 先将SET1 的长度截为和SET2 相等
典型用法
tr 'abc' 'xyz' 对应 a->x b->y c->z
tr [a-z] [A-Z] 或者 tr '[[:lower:]]' '[[:upper:]]'
tr -d 'aij\t' 删除字符 a, i, j和制表符
tr -s [a-zA-Z] 删除连续重复字母
tr-s ' ' 删除连续重复的空格只保留一个[,然后可以给cut处理]
tr -s '\n' 删除空行
tr -s "\r" "\n" 去掉windows格式行尾^M, 即用换行符\n换掉回车符\r
另外 tr 支持 \oct 三位八进制写法
仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。