今天想学习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
例子到时候在加。