【linux】基础命令-tr

功能:tr命令用于转换或删除文件中的字符。
语法:tr[-cdst][--help][--version][set1][set2]tr[OPTION]…SET1[SET2]参数说明:-c:将设置的字符反转,与set1匹配的部分不处理。
如果仅指定set1,tr将删除set1之外的所有字符。
如果指定了set2,则不在set1中的字符将转换为set2中的字符。
示例:echohello1char2next4|tr-c'0-9'''-d:删除命令字符。
示例:echo"Hello123world456"|tr-d'0-9'-s,--squeeze-repeats:将连续重复的字符减少为单个指定字符。
示例:echo"GNUisnotUNIX.Recursiveright?"|tr-s''输出结果:GNUisnotUNIX.Recursiveright?-t,--truncate-set1:将SET1中的指定范围截断为等于SET2中设置的长度。
Set集合:遵循正则表达式。
\NNN:八进制值NNN(1到3位数字)的字符。
\\:反斜杠。
\a:终端发出蜂鸣声。
\b:退格键。
\f:更改页面。
:断行。
\r:请输入。
\t:水平制表符。
\v:垂直制表符。
CHAR1-CHAR2:指定字符范围从CHAR1到CHAR2。
范围规范基于ASCII代码的顺序,从最大到最小,并且仅从最小到最大。
[:alnum:]:所有字母字符和数字。
[:alpha:]:任何字母字符。
[:blank:]:任何水平空白。
[:cntrl:]:任何控制字符。
[:digit:]:任意数字。
[:graph:]:任何可打印字符(不包括空格)。
[:lower:]:全部小写字母。
[:print:]:所有可打印字符(包括空格)。
[:punct:]:任何标点符号。
[:space:]:任何水平和垂直空格字符。
[:upper:]:全部大写字母。
[:xdigit:]:任何十六进制数字。
[=CHAR=]:与指定字符匹配的任意字符(等号内的CHAR表示可自定义的字符)示例:替换:catfile|tra-zA-Z替换压缩字符,不添加任何参数。
echo"thissssnnnnn"|tr-s'sn'将s和n字符压缩为单个字符。

linux中more命令使用介绍

more命令具有与cat类似的功能。
cat命令在屏幕上从上到下显示整个文件的内容。
更多内容分页显示,方便用户逐页阅读。
最基本的命令是按空格键显示下一页,按b键显示下一页(返回)。
还有一个字符串搜索功能。
more命令从前往后读取文件,因此启动时会加载整个文件。
1、命令格式:more[-dlfpcsu][-num][+/pattern][+linenum][file...]2、命令功能:more命令与cat的功能相同,用于查看文件内容。
,但不同的是,可以分页看到更多文件内容,而且还支持直接跳行等功能。
3、命令参数:+n从第n行开始显示。
-n将屏幕尺寸定义为n行。
+/pattern在显示每个文件之前搜索字符串(模式),然后从前两行开始显示。
字符串-c清除顶部的屏幕,然后显示-d提示符“Pressspacetocontinue,'q'toqui”。
t(按空格键继续,q退出)”,禁用响铃功能。
-l忽略Ctrl+l(换页)字符。
-p页面滚动而不是滚动,类似于-。
清除文件c选项-s将多个连续的空白行显示为一行-u从文件内容中删除下划线4.典型任务命令:键入需要定义的n行默认值为:1lineCtrl+F向下滚动一屏空格键向下滚动一屏Ctrl+B返回上一屏=打印当前行的行号:f打印文件名和当前行的行号调用V命令在vi​​编辑器中调用启动shell并运行命令q退出more5示例:示例1:显示文件more+3log2012.log中第3行的内容输出:[root@localhosttest]#catlog2012.log2012-012012-022012-032012-04-day12012-04-day22012-04-day3======[root@localhosttest]#more+3log2012.log2012-032012-04-day12012-04-day22012-04-day3======[root@localhosttest]#示例2:从文件的前两行开始查找第一个出现的“day3”。
启动输出命令。
more+/day3log2012.log输出:这是代码:[root@localhosttest]#more+/day3log2012.log...skipping2012-04-day12012-04-day22012-04-day32012-052012-05-day1======[root@localhosttest]#示例3:各屏幕设置命令显示的行数:more-5log2012.log输出:代码如下:[root@localhosttest]#more-5log2012.log2012-012012-022012-032012-04-day12012-04-day2说明:底部显示本屏显示内容占文件总行数的百分比。
如果按Ctrl+F或空格键,将显示以下屏幕5。
内容和比例也发生变化。
示例4:列出目录中的文件。
由于内容太多,您需要学习如何使用more将其显示在页面上。
这必须与管道|命令结合使用:ls-l|more-5输出:复制代码代码为:[root@localhosttest]#ls-l|more-5Total36-rw-r--r--1rootroot30811-0116:49log2012.log-rw-r--r--1rootroot3310-2816:54log2013.log-rw-r--r--1rootroot12710-2816:51log2014.loglrwxrwxrwx1rootroot710-2815:18log_link.log-log.log-rw-r--r--1rootroot2510-2817:02log.log-rw-r--r--1rootroot3710-2817:07log.txtdrwxr-xr-x6rootroot409610-2701:58scfdrwxrwxrwx2rootroot409610-2814:47test3drwxrwxrwx2rootroot409610-2814:47test4描述:每页显示5个文件的信息。
按Ctrl+F或空格键可显示以下五个文件的信息。

Linux系统中tr命令的基本使用教程

用法:tr[options]...SET1[SET2]替换、缩小和/或删除标准输入中的字符并将结果写入标准输出。

-c,-C,--首补SET1,--d,--delete删除与SET1匹配的内容而不进行替换,--输入与set1匹配的字符时。
替换时将被替换的序列中的连续重复统一减少为一个字符的长度-t,--truncat-set1使第一个SET1的长度等于SET2--help此帮助信息显示并退出--version显示版本信息并退出

SET是一组字符串,一般可以按字面解释。
解析顺序如下:

垂直制表符字符1-字符2从字符1到字符2升序过程中所经历的所有字符[字符*]应用于SET2中,将连续复制指定字符,直到除非符合设置1的长度[字符数*次]。
如果次数以0开头,则将被视为八进制数[:alnum:]。
所有字母和数字[:alpha:]所有字母[:空白:]所有水平间隔的白色字符[:cntrl:]所有控制字符[:digit:]所有数字[:graph:]所有可打印字符、空格打印除空格之外的字符[:lower:]所有小写字符[:print:]所有可打印字符,包括空格[:punct:]和所有标点符号[:space:]所有空格字符水平或垂直组织是[:upper:]所有大写字母[:xdigit:]所有十六进制数字[=character=]所有等于指定字符的字符

替换仅当同时给出SET1和SET2并且没有-d选项时才会发生。
-t选项仅在替换时可用。
如有必要,将通过在末尾添加原始最后一个字符来将SET2补足为与SET1相同的长度。
SET2中多余的字符将被删除。
仅按升序展开[:lower:]和[:upper:]字符;SET2中的大小写转换在用于替换时是成对表示的。
-s作用于SET1,既不替换也不删除,否则SET2在替换或扩展后使用截断。

tr命令中的参数-c比较实用。
您可以将此字符集替换为字符串1中字符集的补集。
字符集必须是ASCII。
然后我在终端上尝试了一个命令:

复制代码如下:tr-cs"[a-z][A-Z]""[\012*]"是针对文件diary.txt将字符数据转换为换行符,然后使用-s选项去除除第一个之外的所有递归字符序列,即将递归字符串压缩为一个字符串;

后来仔细看这个命令的时候,发现\012后面加了一个*。
当我删除它并再次运行时,我发现所有结果都在同一行,并用]分隔。
括号),然后我尝试用\n代替\012,发现只有在\n后面加上*才能得到正确的结果。
后来括号被移除。
这是不需要*的时候,可以输出正确的结果,加上*后,结果会输出在一行上,用*分隔。

估计:平方添加括号后,里面的特殊字符后面必须添加*,无论是字母还是八进制数字表示。

下面是一些例子:

复制的代码如下:[root@localhostzhangy]#echo"TANK"|trA-Za-z#大写字母改为小写TANK将代码复制为如下:[root@localhostzhangy]#echo'tankzhang'|tra-zA-Z#将小写字符转换为大写复制TANKZHANG代码如下:[root@localhostzhangy]#cataaaa.txt#根文件aaa

bbb

复制代码如下:[root@localhostzhangy]#cataaaa.txt|tr'a''c'#字符c,字符accc<占用spacep>bbb

复制代码如下:[root@localhostzhangy]#cataaaa.txt|tr-d'a'#删除所有字符a

bbb

复制代码代码如下:[root@localhostzhangy]#cataaaa.txt|tr-d'\n\t'去除文件fileaaabbbcopy中出现的换行符'\n'和制表符'\t'字符代码如下:[root@localhostzhangy]#cataaaa.txt|tr-s[a-zA-Z]#去除重复字符a

b

复制代码如下:[root@localhostzhangy]#cataaaa.txt|tr-s'\n'#删除空行aaabbb复制代码如下:[root@localhostzhangy]#cataaaa.txt|tr-s'\011''\040'#使用空格将制表符\040替换为制表符\011aaa

bbb

复制代码如下:#trac