您的位置:首页 > 运维架构 > Linux

高级命令行文本处理cut,sed,awk

2017-11-01 10:49 525 查看

cut

echo $PATH
#会输出设置的环境变量的值/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_144/bin:/opt/hadoop-2.8.1/bin:/root/bin
echo $PATH | cut -d ':' -f 5 #以冒号分割取第五个
/opt/jdk1.8.0_144/bin  #输出的值 echo $PATH的值作为参数传递给cut执行
echo $PATH | cut -d ':' -f 3,5 取第三个和第五个
echo $PATH | cut -d ':' -f 3-   取三往后的
echo $PATH | cut -d ':' -f 1-3  取1-3
echo $PATH | cut -d ':' -f 1-3,5 取1-3和第五个


cut -d ‘分隔符’ -f fields 用于所有特定分隔符

cut -c 字符区间 用于排列整齐的区间

sort 排序

cat /etc/passwd | sort  会讲文本排序,每一行的首字母

cat /etc/passwd | sort -t ':' -k 3 按冒号分割的第三列来排序(会按照字符串排序)

cat /etc/passwd | sort -t ':' -k 3nr r表示的是倒叙排
cat /etc/passwd | sort -t ':' -k 6.2,6.4 -k 1r 按第六列的第2个和第四个字符来排序

cat /etc/passwd | sort -t ':' -k 6.2,6.4 -k 1r -u  u表示的是去重


sed

sed '2d' file1 去掉file1文件的第二行

sed -i '2d' file1 去掉file1文件第二行,并且把修改后的结果写入文件(一般不要修改,要复制写)

sed '2d,$d' file1 删除文件file1的第二行到结尾行

sed '$d' file1   删除file1文件的最后一行

sed 's/test/mytest/g' file1 把file1文件中的所有test替换成mytest,如果没有g则只有每行第一个test替换成mytest

sed 's/^test/mytest/g' file1   替换以test开头的

sed 's/^test/&mytest/' file1  在以test开头的后面加上mytest &表示的是后面加上

sed -n 's/\(love\)able/\1laok/p' file1 讲loveable替换成了lovelaok love不替换, n,p一起使用表示只打印那些花生替换的行


sed命令非常多,这里只是列举比较常用的,在使用的可以有使用到的要查看帮助

awk

last -n 5  输出最近登陆的5个人的信息

last -n 5 |awk '{print $1}' #awk默认分隔符是空格或tab

cat /etc/passwd |awk -F ':' '{print $1}'  指定分隔符打印
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 文本 cut sed awk