Linux 命令学习

今天想学习linux,但win7系统,没办法打算安装了一下虚拟机virtualbox+centos7.

镜像和安装文件都准备就绪,通过virtualbox添加centos7,在设置系统时添加镜像,进入系统,但是enter之后一直黑屏。选择镜像文件时不能选择64位linux,但我的镜像是64位,网上说无64位选项是由于系统未打开虚拟机,需通过bios able这个虚拟设置。今天尝试未成功。改完后应用打开显示找不到com 对象。郁闷中。

对于linux系统awk, grep, sed为三剑客。

awk是适合格式化文本,对文本进行复杂的格式化处理,

grep是查找或匹配文字

sed是编辑匹配到的文本

 

awk学习

awk [options]'program' 文件1,文件2。。。

这个不好理解,通过具体的实例。

awk '{print $1}' 文件名  

$1意思是每行第一列,awk是通过逐行处理,一行一行处理,通常以换行符为标记为一行,每行分割符默认为空格;$2为第二列。。$NF为最后一列,倒数第二列为$(NF-1)。$0为整行。

cat awktest |awk '{print $1}' awktest   显示每一行的第一列

cat awktest |awk '{print "name:" $1}' awktest.   显示带有name: 

cat awktest |awk '{print "hello " $1,",welcome"}' awktest    显示如hello 人 ,welcome

 除此之外还有begin end 可类似于表头表尾。

at awktest |awk 'BEGIN{print "wenhou","name"} {print "hello " $1,",welcome"}END{print "jieshu","wumingzi"}' awktest

如出现的结果为

wenhou name

hello hello ,welcome

hello linux ,welcome

hello byb ,welcome

jieshu wumingzi

awk还有if else 的语法:

例如对于90 为及格,小于60为不及格。

语法为:awk

cat awktest |awk 'BEGIN{print "wenhou","name"} {if($3>90){print $1,"jige"}else{print $1,"bujige"}}END{print "this is end"}'

结果如下:

wenhou name

jone bujige

linux jige

byb bujige

this is end

awk暂时学习一些简单的使用,还能while循环等,正则表达式匹配等。 NR代表行号

 

再来学习sed简单语句:

sed是 string editor。文件的增删改替换查

sed -n  '1p' 文件名 显示第一行

sed '1a aa' 文件名 增加第一行后

sed '1d' file1   删除第一行

sed '1i' xx 与1a都是增加但放的位置不同。a为增加在后面,i为当前位置。原来数据后移

c 替代 sed ‘1c aa’ file1

s 替换。sed ‘s/1/aa’ ett.txt 将1换成aa

 

grep 是一个搜索工具。查找匹配条件的行。

grep -l "hello" file1 查找file1文件下的hello单词的行的文件名

grep  “hello” file1  查找file1文件下的hello单词的行

grep -v "hello" file1 查找file1文件下不含hello]单词的行

-n 显示匹配的行数与行

-r 递归搜索文件夹下的包含单词的行

-A  列数。grep 20 -A 10 从20开始往后10行

 

例题:100行,查找20行到30行的数。

head -30 ett.txt | tail -11

seq 10 30   用于产生从某个数到另外一个数之间的所有整数  seq 1 2 10  1-10中相邻2个的数

sed -n '20,30'p ett.txt 

grep 20 -A 10 ett.txt

awk 'NR>19&&NR<31' ett.txt

例子到时候在加。

 

man cp 同类cp --help

posted @ 2018-06-26 21:59  lovebear  阅读(193)  评论(0编辑  收藏  举报