Linux shell tr 命令详解

Linux shell tr 命令详解

1. 用途

tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。

2. 语法

tr [OPTION]... SET1 [SET2]

3. 参数

3.1 -s 压缩重复字符

-s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of  a  repeated  character  that  is listed in SET1 with a single occurrence of that character)

xiaosi@Qunar:~/test$ echo "aaabbbaacccfddd" | tr -s [abcdf] // abacfd

可以使用这一特点,删除文件中的空白行,实质上跟上面一样,都是用SET1指定的字符来替换对应的重复字符

xiaosi@Qunar:~/test$ cat b.txt
I like football
Football is very fun!
Hello
xiaosi@Qunar:~/test$ cat b.txt | tr -s ["\n"]
I like football
Football is very fun!
Hello

3.2 -d 删除字符

-d:delete,删除SET1中指定的所有字符,不转换(delete characters in SET1, do not translate)

xiaosi@Qunar:~/test$ echo "a12HJ13fdaADff" | tr -d "[a-z][A-Z]"
1213
xiaosi@Qunar:~/test$ echo "a1213fdasf" | tr -d [adfs]
1213

3.3 字符替换

-t:truncate,将SET1中字符用SET2对应位置的字符进行替换,一般缺省为-t

xiaosi@Qunar:~/test$ echo "a1213fdasf" | tr -t [afd] [AFO] // A1213FOAsF

上述代码将a转换为A,f转换为F,d转换为O。

可以利用这一特点,实现大小字母的转换

xiaosi@Qunar:~/test$ echo "Hello World I Love You" |tr -t [a-z] [A-Z]
HELLO WORLD I LOVE YOU
xiaosi@Qunar:~/test$ echo "HELLO WORLD I LOVE YOU" |tr -t [A-Z] [a-z]
hello world i love you

也可以利用字符集合进行转换

xiaosi@Qunar:~/test$ echo "Hello World I Love You" |tr -t [:lower:] [:upper:]
HELLO WORLD I LOVE YOU
xiaosi@Qunar:~/test$ echo "HELLO WORLD I LOVE YOU" |tr -t [:upper:] [:lower:]
hello world i love you

备注:

字符集合如下

\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\\ 反斜杠
\a Ctrl-G 铃声
\b Ctrl-H 退格符
\f Ctrl-L 走行换页
\n Ctrl-J 新行
\r Ctrl-M 回车
\t Ctrl-I tab键
\v Ctrl-X 水平制表符
CHAR1-CHAR2 从CHAR1 到 CHAR2的所有字符按照ASCII字符的顺序
[CHAR*] in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] 所有的字母和数字
[:alpha:] 所有字母
[:blank:] 水平制表符,空白等
[:cntrl:] 所有控制字符
[:digit:] 所有的数字
[:graph:] 所有可打印字符,不包括空格
[:lower:] 所有的小写字符
[:print:] 所有可打印字符,包括空格
[:punct:] 所有的标点字符
[:space:] 所有的横向或纵向的空白
[:upper:] 所有大写字母

3.4 字符补集替换

-c:complement,用SET2替换SET1中没有包含的字符

xiaosi@Qunar:~/test$ cat a.txt
Monday   09:00
Tuesday  09:10
Wednesday 10:11
Thursday  11:30
Friday   08:00
Saturday  07:40
Sunday   10:00
xiaosi@Qunar:~/test$ cat a.txt | tr -c "[a-z][A-Z]" "#" | tr -s "#" | tr -t "#" "\n"
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

上面代码中 tr -c "[a-z][A-Z]" "#" 表示将除大小字母以外的所有的字符都替换为#。

上面代码可优化为:

xiaosi@Qunar:~/test$ cat a.txt | tr -cs "[a-z][A-Z]" "\n"
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

感谢阅读,希望嫩帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 浅谈Linux 脚本 sh 和 ./ 的区别

    如果.不在PATH里面,要执行当前目录下的可执行文件,使用全路径: ./executable-file PATH是环境变量,如果将当前目录"./"添加到环境变量中,那么也可以不用"./",直接输入当前目录下有可执行权限的可执行文件就可以运行了 如果要执行一个sh脚本,不管那个脚本有没有可执行权限,都可以使用: sh [file] 这时file是作为参数传给sh的,如果file不在当前目录下,也需要使用全路径. 全路径有绝对路径和相对路径两种../和../开头的都是相

  • Linux C字符串替换函数实例详解

    Linux C字符串替换函数实例详解 最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下: 实例代码: #include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.net/Expert/Top

  • Linux shell命令帮助格式详解

    前言 linux shell命令通常可以通过-h或--help来打印帮助说明,或者通过man命令来查看帮助,有时候我们也会给自己的程序写简单的帮助说明,其实帮助说明格式是有规律可循的 帮助示例 下面是git reset命令的帮助说明,通过man git-reset可以查看 git reset [-q] [<tree-ish>] [--] <paths>... git reset (--patch | -p) [<tree-ish>] [--] [<paths>

  • linux指令man page之rm,mv详解

    linux指令man page之rm,mv详解   man rm NAME rm - 移除文件档案或者目录 SYNOPSIS rmdir [OPTION]... FILE... OPTIONS -f, --force 忽略不存在的文件,不显示提示信息 -i, --interactive 移除前询问 -r, -R, --recursive 递归移除目录及其包含的文件 --help 显示帮助信息 --version 显示版本信息   man mv NAME mv - 移动(重命名)文件 SYNOPS

  • 详解Linux命令修改文件的三个时间

    Linux命令如何修改文件的三个时间 本文主要对stat和touch两个命令进行讲解. 如何查看一个文件的元数据呢?可以使用stat命令. File: 'ceshi1'  文件所在路径 Size: 4096       Blocks: 8 文件占据的磁盘块          IO Block: 4096   directory 文件类型 Device: 801h/2049d  文件所在的设备名 Inode: 378  文件索引节点号        Links: 4 被硬链接的次数 Access:

  • linux 详解useradd 命令基本用法

    linux 详解useradd 命令基本用法 概要: 在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观.以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作.本文主要描述笔者在学习使用 useradd 命令时的一些测试结果. 说明:本文中的所有试验都是在 Ubuntu14.04 上完成. 功能 在Linux中 useradd 命令用来创建或更新用户信息. useradd 命令属于比较难用的命令 (low level utility for

  • Linux监视进程之ps命令详解

    本文参考<UNIX/Linux系统管理技术手册>. 操作系统:Debian8.5 仅仅以下常用的三种组合命令的解释,更加齐全的命令请自行ps --help all 查看. 一.ps -ef 输出展示: UID PID PPID C STIME TTY TIME CMD root 1 0 0 2016 ? 00:00:28 /lib/systemd/systemd --system --deserialize 15 root 2 0 0 2016 ? 00:00:00 [kthreadd] ro

  • linux touch,chattr指令详解及用法

     linux touch,chattr指令详解 man touch NAME touch - 更改文件的时间戳 SYNOPSIS touch [OPTION]... FILE... DESCRIPTION 更新文件的atime和mtime为现在的时间 -a 仅修文件被取用的时间 -c, --no-create 文件不存在是不建立新的档案 -d, --date=STRING 使用STRING的设定而不使用现在的时间 -m 仅修改文件内容变更的时间 -t STAMP 使用[[CC]YY]MMDDhh

  • php在linux中可能用到的命令(推荐)

    如下所示: php -i | grep php.ini    查找php.ini的位置 php-cgi -b 127.0.0.1:9000 &  查看php-cgi进程 以上这篇php在linux中可能用到的命令(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Linux shell tr 命令详解

    Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作. 2. 语法 tr [OPTION]... SET1 [SET2] 3. 参数 3.1 -s 压缩重复字符 -s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of  a  repeated  character  that  is listed in SET1

  • linux中 pmap 命令详解

    通过查看帮助,返回了如下信息: Usage: pmap [options] pid [pid ...] Options: -x, --extended show details -X show even more details WARNING: format changes according to /proc/PID/smaps -XX show everything the kernel provides -c, --read-rc read the default rc -C, --re

  • linux 中ls命令详解

    ls命令用来显示目标列表,在Linux中是使用率较高的命令.ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件. 语法 ls(选项)(参数) 选项 -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出): -A:显示除影藏文件“.”和“..”以外的所有文件列表: -C:多列显示输出结果.这是默认选项: -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列: -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文

  • Linux 下xargs命令详解及xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以及与管道的区别.为什么要用xargs呢,我们知道,linux命令可以从两个地方读取要处理的内容,一个是通过命令行参数,一个是标准输入.例如cat.grep就是这样的命令,举个例子: echo 'main' | cat test.cpp 这种情况下cat会输出test.cpp的内容,而不是'main'

  • Linux性能测试 pmap命令详解

    名称: pmap - report memory map of a process(查看进程的内存映像信息) 用法 pmap [ -x | -d ] [ -q ] pids... pmap -V 选项含义 -x extended Show the extended format. 显示扩展格式 -d device Show the device format. 显示设备格式 -q quiet Do not display some header/footer lines. 不显示头尾行 -V s

  • docker备份linux系统的命令详解

    tar备份系统 sudo tar cvpzf backup.tgz --exclude=/proc --exclude=/mnt --exclude=/sys --exclude=/backup.tgz / 更多linux备份方法参考https://www.jb51.net/article/151167.htm 编写dockerflie 新建目录Dockerfile,在Dockerfile目录下编辑Dockerfile脚本,如下内容: FROM scratch COPY rootfs / RUN

  • 基于Debian的linux系统软件安装命令详解 (推荐)

    Debian简介 广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Debian项目众多内核分支中以Linux宏内核为主,而且 Debian开发者 所创建的操作系统中绝大部分基础工具来自于GNU工程 ,因此 "Debian" 常指Debian GNU/Linux. 非官方内核分支还有只支持x86的Debian GNU/Hurd(Hurd微内核),只支持amd64的Dyson(OpenSolaris混合内核)等.这些非官方分支都存在一些严重的问题,没有实用性,比如H

  • Linux的netstat命令详解

    目录 Linux的netstat命令 1.TCP连接状态详解 2.命令格式 3.命令选项 4.列出所有端口(包含TCP和UDP) 4.列出所有TCP端口 5.列出所有UDP端口 6.列出所有处于监听状态的 Sockets 7.只列出所有监听tcp端口 8.只列出所有监听udp端口 9.只列出所有监听UNIX端口 10显示所有端口的统计信息 11.显示TCP端口的统计信息 12.显示UDP端口的统计信息 13.在netstat输出中显示 PID 和进程名称 14.在netstat输出中不显示主机,

  • shell 循环命令详解

    目录 1. for 命令 1.1 for 命令的使用 1.2 for 命令面临的问题 1.3 更改字段分隔符 1.4 用通配符读取目录 2. c 风格 for 命令 3. while 命令 4. until 命令 5. 控制循环 5.1. break 命令 5.2. continue命令 1. for 命令 1.1 for 命令的使用 bash shell 提供了 for 命令,可以创建一个遍历一系列值的循环.每次一轮循环都使用其中一个值来执行已定义好的一组命令.下面是 bash shell 中

  • Linux中mkdir命令详解

    linux mkdir用来创建目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1. 新建一个文件夹 one 2. 新建三个文件夹three,four,five 3. 新建一个多层级文件夹 201904/a/01 总结 以上所述是小编给大家介绍的Liunx中mkdir命令详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

随机推荐