Linux命令(11)——字符转换命令:tr、col、join、paste、expand
来源:互联网 发布:php调用json接口 编辑:程序博客网 时间:2024/04/30 19:25
1.tr命令
1.1功能
tr可以用来转换或者删除一段文字。tr是translate(转换的缩写),tr的功能英文示意是:translate or delete characters。tr所有的功能均可由sed来完成,可以将tr视为sed一个极简的实现。
1.2格式
tr [-dsc] <character set1> <character set2>
1.3选项
-c,-C,--complement:将字符集<character set1>以外的其他字符删除或者转换为字符集<character set2>中的最后一个字符(如果你指定了多个字符的话)。见示例6。-d,--delete:删除信息当中的SET1这个字符串。-s,--squeeze-repeats:压缩重复的字符,只保留一个。--help:显示帮助信息。--version:显示版本信息。
1.4示例
(1)将last输出的信息中所有小写的字符变成大写字符。
last|tr '[a-z]' '[A-Z]'//或者last|tr [a-z] [A-Z]
(2)将/etc/passwd输出的信息中的冒号:删除。
cat /etc/passwd | tr -d ':'
(3)将dos文件转成unix文件。
cat /etc/passwd | tr -d '\r'
(4)删除空行
cat file | tr -s "\n" > new_file
(5)将文件file中出现的”abc”替换为”xyz”。
cat file | tr "abc" "xyz" > new_file
注意:这里凡是在file中出现的”a”字母,都替换成”x”字母,”b”字母替换为”y”字母,”c”字母替换为”z”字母,而不是将字符串”abc”替换为字符串”xyz”。
(6)删除和替换指定字符集以外的字符。
//替换指定字符集以外的字符[b3335@MIC ~]$ echo alv blv|tr -c 'lv ' "x"xlv xlvx//删除指定字符集以外的字符[b3335@MIC ~]$ echo alv blv|tr -cd 'lv'lvlv
2.col命令
2.1功能
标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符>和>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符。
col是control中co和l的拼接。
2.2格式
col [-bfpx] [-l num]
2.3选项说明
-b:过滤所有的控制字符,包括RLF和HRLF-f:过滤RLF字符,但忽略HRLF字符-p:强制不转换未识别的控制符-x:以空格来代替制表符Tab-l <缓冲区大小>:设置缓冲区大小,默认缓冲区为128行。
RLF字符(reverse line feed)是反向换行符,HRLF字符(half-reverse line feed)是半反向换行符。百度知道中有网友的回答,但是我还是不太清楚这两个字符的作用和应用场景,请知道的大牛评论告知,万分感谢。
示例:
(1)将Tab替换成空格。
col -x testfile
(2)将帮助文档内的控制符删除。以col命令的帮助文档为例。
man col|col -b>newFile
3.join命令
3.1功能
将两个文件,按照指定的相同字段进行笛卡尔乘积横向拼接,并输出到标准输出。默认情况下,join字段分隔符是空格。此外,join时,两个文件需要按照某个字段排好序。
3.2格式
join <选项> <file1> <file2>
当file1或者file2是-
(二者不能同时是-
),那么从标准输入读取。
3.3选项说明
-a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。-e <字符串>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。-i:--igore-case,比较栏位内容时,忽略大小写的差异。-o <格式>:按照指定的格式来显示结果。-t <字符>:使用栏位的分隔字符。-v<1或2>:跟-a相同,但是只显示文件中没有相同栏位的行。-1 <栏位>:连接[文件1]指定的栏位。-2 <栏位>:连接[文件2]指定的栏位。--help 显示帮助。--version 显示版本信息。
3.4示例
(1)连接两个文件,默认以第一列作为连接字段。
file1内容如下:lvlv dablelv 25zhangsan San 12file2内容如下:lvlv english 15lvlv math 75zhangsan math 14zhouxun english 45[b3335@MIC test]$ join file1 file2lvlv dablelv 25 english 15lvlv dablelv 25 math 75zhangsan San 12 math 14
(2)还是以上面的两个文件为例,显示指明按照第一列英文名进行连接。
[b3335@MIC test]$ join -1 1 -2 1 file1 file2
(3)如果想显示没有相同字段的行,使用-a1或-a2指定显示第一个或者第二个文件的行。
[b3335@MIC test]$ join -a2 file1 file2lvlv dablelv 25 english 15lvlv dablelv 25 math 75zhangsan San 12 math 14zhouxun english 45 //显示了文件file2中未匹配的一行
4paste命令
4.1功能
用于横向拼接多个文件,并将合并结果输出到标准输出。把每个文件以行为单位,默认以Tab键分隔加以合并。paste后可接多个文件,不限于2个文件。如果文件写成“-”,表示来自标准输入。paste相对于join来说,简单许多,不需要有相同的字段才能按行连接。
4.2格式
pasete [选项] [file1 ...]
4.3选项说明
-d <分隔符>,--delimiters=<间隔字符>:用指定的间隔字符取代Tab。-s,--serial:顺序地合并一个文件的多行到一行。--help:显示帮助信息。--version:显示版本。
4.4示例
(1)将文件的所有行合并到一行。
paste -s file1
(2)合并两个文件,比如将/etc/passwd与/etc/shadow同一行连接在一起,默认以Tab分隔。
[b3335@MIC test]$ paste /etc/passwd /etc/shadowbin:x:1:1:bin:/bin:/sbin/nologin bin:*:15615:0:99999:7:::daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:*:15615:0:99999:7:::adm:x:3:4:adm:/var/adm:/sbin/nologin adm:*:15615:0:99999:7:::
5.expand命令
5.1功能
用于将文件的制表符(TAB)转换为空格符(space),默认一个Tab对应8个空格符,并将结果输出到标准输出。若不指定任何文件名或所给文件名为”-“,则expand会从标准输入读取数据。
5.2格式
expand [选项] [file]
5.3选项说明
-i, --initial:不转换非空白符后的制表符。(暂未了解具体用法,知悉者请留言告知,万分感谢)-t <数字>,--tabs=NUMBER:指定一个tab替换为多少个空格,而不是默认的8-t <Tab位置列表>, --tables=LIST:指定制表符位置列表,用逗号分隔--help:显示帮助信息--version:输出版本信息
5.4示例
(1)将文件内的每一个tab制表符替换为6个空格符。
expand -t 6 file
了解expand命令,与之相反的命令是unexpand,就是将空白转成tab制表符,这里不多描述,有兴趣者可以进一步了解一下。
参考文献
[1]man tr
[2]man col
[3]man join
[4]man paste
[5]man expand
- Linux命令(11)——字符转换命令:tr、col、join、paste、expand
- linux---tr,col,join,paste,expand 字符转换命令
- Linux下五个字符转换命令:tr,col,join,paste,expand
- linux命令之字符转换命令:tr, col, join, paste
- 字符串转换命令:tr,col,join,paste,expand
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
- shell 知识点补充(2)-重定向/ ; , &&, ||/管线命令/grep/sort/ uniq/wc/tee/tr/col/join/paste/expand/split/-
- linux中的join、paste、split、tr命令
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- Linux新手生存笔记[7]——重点命令4-tr&join&cut&paste&split
- Linux新手生存笔记[7]——重点命令4-tr&join&cut&paste&split
- linux paste join命令
- 【转帖】Linux Cut 命令 与 Paste命令&Join命令&tr命令
- linux命令join与paste
- tr 命令 转换字符
- 《Linux命令、编辑器与Shell编程》读书笔记4.3-其他数据文件处理命令(tr,sort,cut,paste,join,uniq,split)
- linux中字符转换命令-tr的用法
- 自定义UserAgent绕过安全狗
- java去除重复元素
- java.lang.*;
- JAVA深拷贝和浅拷贝
- socket API 学习一
- Linux命令(11)——字符转换命令:tr、col、join、paste、expand
- iOS 算法面试题(字符串逆序输出、二叉树、归并排序)~demo
- [ndk]Android NDK: Your APP_BUILD_SCRIPT points to an unknown file/Please define the NDK_PROJECT_PATH
- Intellij IEDA 使用lombok,代码简约而不简单
- sdl renderer window texture surface更新关系
- 分区丢失了数据怎么恢复
- ss!=null&&!ss.isEmpty()的区别
- 排序算法--归并排序
- VBA-常用函数集锦-13-Excel多行或多列删除