linux shell tr命令,linux shell命令学习笔记

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )

who命令查询账号 who am i 查询本机    wc(Word count)查询单词数

cat主要有三大功能:

1.一次显示整个文件。$ cat filename

2.从键盘创建一个文件。$ cat > filename

只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件: $cat file1 file2 > file

1、cat f1.txt,查看f1.txt文件的内容。

2、cat -n f1.txt,查看f1.txt文件的内容,并且由1开始对所有输出行进行编号。

3、cat -b f1.txt,查看f1.txt文件的内容,用法与-n相似,只不过对于空白行不编号。

4、cat -s f1.txt,当遇到有连续两行或两行以上的空白行,就代换为一行的空白行。

5、cat -e f1.txt,在输出内容的每一行后面加一个$符号。

6、cat f1.txt f2.txt,同时显示f1.txt和f2.txt文件内容,注意文件名之间以空格分隔,而不是逗号。

7、cat -n f1.txt>f2.txt,对f1.txt文件中每一行加上行号后然后写入到f2.txt中,会覆盖原来的内容,文件不存在则创建它。

8、cat -n f1.txt>>f2.txt,对f1.txt文件中每一行加上行号后然后追加到f2.txt中去,不会覆盖原来的内容,文件不存在则创建它。

chom 赋予权限

$ chmod u+x file                      给file的属主增加执行权限

$ chmod 751 file                      给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

$ chmod u=rwx,g=rx,o=x file      上例的另一种形式

$ chmod =r file                     为所有用户分配读权限

$ chmod 444 file                   同上例

$ chmod a-wx,a+r   file          同上例

$ chmod -R u+r directory           递归地给directory目录下所有文件和子目录的属主分配读的权限

$ chmod 4755                            设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的

-rwx-r--r-- (一共10个参数)

第一个跟参数跟chmod无关,先不管.

2-4参数:属于user

5-7参数:属于group

8-10参数:属于others

接下来就简单了:r==>可读 w==>可写 x==>可执行

r=4 w=2 x=1

所以755代表 rwxr-xr-x

echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串。

\a 发出警告声;

\b 删除前一个字符;

\c 最后不加上换行符号;

\f 换行但光标仍旧停留在原来的位置;

\n 换行且光标移至行首;

\r 光标移至行首,但不换行;

\t 插入tab;

\v 与\f相同;

\\ 插入\字符;

\nnn 插入nnn(八进制)所代表的ASCII字符;

–help 显示帮助

–version 显示版本信息

printf命令格式化并输出结果到标准输出。

%b 相对应的参数被视为含有要被处理的转义序列之字符串。 %c ASCII字符。显示相对应参数的第一个字符 %d, %i 十进制整数 %e, %E, %f 浮点格式 %g %e或%f转换,看哪一个较短,则删除结尾的零 %G %E或%f转换,看哪一个较短,则删除结尾的零 %o 不带正负号的八进制值 %s 字符串 %u 不带正负号的十进制值 %x 不带正负号的十六进制值,使用a至f表示10至15 %X 不带正负号的十六进制值,使用A至F表示10至15 %% 字面意义的%

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法

sed命令行格式为:

sed [-nefri] ‘command’ 输入文本

常用选项:-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-e∶直接在指令列模式上进行 sed 的动作编辑;

-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;

-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)

-i∶直接修改读取的档案内容,而不是由萤幕输出。

常用命令:

a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~

s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

举例:(假设我们有一文件名为ab)

删除某行

[[email protected] ruby]# sed '1d' ab              #删除第一行

[[email protected] ruby] # sed '$d' ab              #删除最后一行

[[email protected] ruby] # sed '1,2d' ab           #删除第一行到第二行

[[email protected] ruby] # sed '2,$d' ab           #删除第二行到最后一行

显示某行

.    [[email protected] ruby]# sed -n '1p' ab           #显示第一行

[[email protected] ruby] # sed -n '$p' ab           #显示最后一行

[[email protected] ruby] # sed -n '1,2p' ab        #显示第一行到第二行

[[email protected] ruby] # sed -n '2,$p' ab        #显示第二行到最后一行

使用模式进行查询

[[email protected] ruby] # sed -n '/ruby/p' ab    #查询包括关键字ruby所在所有行

[[email protected] ruby] # sed -n '/\$/p' ab        #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

增加一行或多行字符串

[[email protected] ruby]# cat ab

Hello!

ruby is me,welcome to my blog.

end

[[email protected] ruby] # sed '1a drink tea' ab#第一行后增加字符串"drink tea"

Hello!

drink tea

ruby is me,welcome to my blog.

end

[[email protected] ruby] # sed '1,3a drink tea' ab#第一行到第三行后增加字符串"drink tea"

Hello!

drink tea

ruby is me,welcome to my blog.

drink tea

end

drink tea

[[email protected] ruby] # sed '1a drink tea\nor coffee' ab#第一行后增加多行,使用换行符\n

Hello!

drink tea

or coffee

ruby is me,welcome to my blog.

end

代替一行或多行

[[email protected] ruby] # sed '1c Hi' ab#第一行代替为Hi

Hi

ruby is me,welcome to my blog.

end

[[email protected] ruby] # sed '1,2c Hi' ab#第一行到第二行代替为Hi

Hi

end

替换一行中的某部分

格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)

[[email protected] ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替换ruby为bird

[[email protected] ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g'        #删除ruby

插入

[[email protected] ruby] # sed -i '$a bye' ab#在文件ab中最后一行直接输入"bye"

[[email protected] ruby]# cat ab

Hello!

ruby is me,welcome to my blog.

end

bye

删除匹配行

sed -i '/匹配字符串/d'  filename  (注:若匹配字符串是变量,则需要“”,而不是‘’。记得好像是)

替换匹配行中的某个字符串

sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename

tr用来从标准输入中通过替换或删除操作进行字符转换。

带有最常用选项的tr命令格式为:

tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file

这里:

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

-d 删除字符串1中所有输入字符。

-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。

2、字符范围

指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。

[a-z] a-z内的字符组成的字符串。

[A-Z] A-Z内的字符组成的字符串。

[0-9] 数字串。

\octal 一个三位的八进制数,对应有效的ASCII字符。

[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。

tr中特定控制字符的不同表达方式

速记符含义八进制方式

\a Ctrl-G  铃声\007

\b Ctrl-H  退格符\010

\f Ctrl-L  走行换页\014

\n Ctrl-J  新行\012

\r Ctrl-M  回车\015

\t Ctrl-I  tab键\011

\v Ctrl-X  \030

实例:

、将文件file中出现的"abc"替换为"xyz"

# cat file | tr "abc" "xyz" > new_file

【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。

2、使用tr命令“统一”字母大小写

(小写 --> 大写)

# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)

# cat file | tr [A-Z] [a-z] > new_file

3、把文件中的数字0-9替换为a-j

# cat file | tr [0-9] [a-j] > new_file

4、删除文件file中出现的"Snail"字符

# cat file | tr -d "Snail" > new_file

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

5、删除文件file中出现的换行'\n'、制表'\t'字符

# cat file | tr -d "\n\t" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。

6、删除“连续着的”重复字母,只保留第一个

# cat file | tr -s [a-zA-Z] > new_file

7、删除空行

# cat file | tr -s "\n" > new_file

8、删除Windows文件“造成”的'^M'字符

# cat file | tr -d "\r" > new_file

或者

# cat file | tr -s "\r" "\n" > new_file

【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者

9、用空格符\040替换制表符\011

# cat file | tr -s "\011" "\040" > new_file

10、把路径变量中的冒号":",替换成换行符"\n"

# echo $PATH | tr -s ":" "\n"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值