以下分享linux中的一些高级命令,供大家参考。
先来看一个命令:
高级文件管理命令:
cat主要有三大功能:
1.一次显示整个文件。$ cat filename
2.从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件: $cat file1 file2 > file
参数:
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
把test.txt文件扔进垃圾箱,赋空值test.txt
cat :
[root@jbxue tmp]# cat a //查看一个文件
haha
[root@jbxue tmp]# cat a > a.txt 添加a到一个文件中会覆盖之前的内容
[root@jbxue tmp]# cat a.txt
haha
[root@jbxue tmp]# cat a >> a.txt 追加,不会覆盖之前的内容
[root@jbxue tmp]# cat a.txt
haha
haha
[root@jbxue tmp]# cat -n a.txt 显示内容和行号
1 haha
2 haha
[root@jbxue tmp]# cat -b a.txt //不显示空行行号但是空格是显示的
1 haha
2 haha
3 haha
[root@jbxue tmp]# cat -bs a.txt //把多个空行合并成1行
1 haha
2 haha
3 haha
[root@jbxue tmp]# cat b.txt
heihei
1111111
2222222
[root@jbxue tmp]# tac b.txt //倒序显示
2222222
1111111
heihei
===============================================
[root@jbxue tmp]# cat a.txt | grep -v ^$ //不显示空行 ^$ 为显示空行 -v表示取反
haha
haha
haha
tr:
只能替换单个字符
cut:命令
1 一两句话描述一下cut命令吧!
正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。
cut是以每一行为一个处理对象的,这种机制和sed是一样的。(关于sed的入门文章将在近期发布)
2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f 指定第几部分
第四,-d指定分割符
事例:
具体事例:
取本机IP地址 192.168.1.253
方法一:
方法二:
补充
1 以“字节”定位,给个最简单的例子?
举个例子吧,当你执行ps命令时,会输出类似如下的内容:
如果想提取每一行的第3个字节,就这样:
看明白了吧,-b后面可以设定要提取哪一个字节,其实-b和3之间没有空格也是可以的,但推荐有空格:)
2 如果“字节”定位中,我想提取第3,第4、第5和第8个字节,怎么办?
-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了。
例子:
注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。
这个例子就可以说明这个问题:
3 还有哪些类似“3-5”这样的小技巧,列举一下吧!
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b -3
roc
roc
roc
[rocrocket@rocrocket programming]$ who|cut -b 3-
crocket :0 2009-01-08 11:07
crocket pts/0 2009-01-08 11:23 (:0.0)
crocket pts/1 2009-01-08 14:15 (:0.0)
想必你也看到了,-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节“c”。
如果我执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出现连续两个重叠的c的。看:
4 给个以字符为定位标志的最简单的例子吧!
下面例子你似曾相识,提取第3,第4,第5和第8个字符:
不过,看着怎么和-b没有什么区别啊?莫非-b和-c作用一样? 其实不然,看似相同,只是因为这个例子举的不好,who输出的都是单字节字符,所以用-b和-c没有区别,如果你提取中文,区别就看出来了,来,看看中文提取的情况:
看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
既然提到了这个知识点,就再补充一句,如果你学有余力,就提高一下。
当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下:
5 域是怎么回事呢?解释解释:)
为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。
(下面的讲解内容是在假设你对/etc/passwd文件的内容和组织形式比较了解的情况下进行的。)