2017-11-22 17:39:02 Post_Yuan 阅读数 764
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7178 人正在学习 去看看 良许

有些时候我们可能希望在文本编辑里面基于列模式去修改内容,比如我们希望删除文本内容的每一行的第二个字符应该怎么做呢?

[root@cent-1 ~]# cat test
aa
bb
cc
dd
ee
ff
gg

首先,使用vim打开文件并切换到列编辑模式,使用Ctrl+v切换列模式,然后选中希望修改的行,如下图
这里写图片描述
然后输出d(表示删除选中行的那一列的所有内容),Esc后保存即可。

上面介绍如何删除某一列的字符,那么如何在某一列前面增加同样的字符呢?同样是先使用Ctrl+v进入列编辑模式并选中希望修改的行,然后执行Shift+i(表示开始插入内容)。然后输出想要添加的字符,如kkk,此时看到kkk只显示在第一行,如下图
这里写图片描述
不用担心,添加字符完成后,执行两次Esc,你会发现现在每一行都增加了kkk了,保存并退出即可。
这里写图片描述

2018-01-11 17:38:16 hellwhj 阅读数 1059
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7178 人正在学习 去看看 良许

同事说需要统计日志中按url的path去重之后的结果,结果中要保留参数。相同url不同参数的,只保留第一行。

理论上各种命令都是流式处理,一行一行的处理。每道命令都相当于一个过滤器。比如你要按某列去重,则事先把数据cut到只剩你需要去重的这一列。对url中的path做sort+uniq。

但是这样会导致参数都没了。所以不能用这个。


最后成功的命令如下:

cut -f 7 -d " " access.2018-01-11.log | sed 's/?/ /' | awk '!a[$1]++{print}'

解释一下

a[$1]是$1的hash值,在这里是被作为变量名了,初始值为0,++表示在本行执行完毕之后+1

那么awk走到第一行时,该变量刚刚初始化则是0,取反后为1,即为true,所以第一行会被print

第二行如果跟第一行的a[$1]一样,则该变量的值已经在上一行被+1了,所以值不是0了,而是1。则取反之后值为0,即为false,则本行不print

第三行如果还一样,则变量值为2,由于在C中,只要不是0就是真,所以第三行变量值取反为false,不print

---------------------------------------------------

后来同事又提了更过分的要求,想要把以上命令再结合ssh,从跳板机就直接远程获取到处理好的数据并写入文件,这样不用一个个机器去登。

一开始是这样写的,会报错。

ssh xxxxx.beta.cn0 "zgrep -e 'HTTP/1.0\" \(2\|3\)0' /xxxxxx/logs/access.2018-01-08.log | cut -f 7 -d ' '| sed 's/?/ /' | awk '!a[$1]++{print}' " >> valid_access.log
报错如下:
-bash: !a[$1]++: event not found
最后换了个思路,把awk放到本地执行,就解决了:
ssh xxxxx.beta.cn0 "zgrep -e 'HTTP/1.0\" \(2\|3\)0' /xxxxxx/logs/access.2018-01-08.log | cut -f 7 -d ' '| sed 's/?/ /' " | awk '!a[$1]++{print}' >> valid_access.log


2018-08-01 20:55:51 u013912191 阅读数 3023
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7178 人正在学习 去看看 良许

背景

在工作中经常会碰到,对文本的列、行的操作,主要涉及操作为sed和awk。本文记录哈常见的场景,以便不时之需。

常用特殊字符

  • $ 正则表达式中表示一行结尾,常用在(grep、sed、awk、vim中);或用在变量的前导符
  • ^ 表示一行开始
  • $? 状态值(0,1)

对行的操作

主要使用sed命令进行操作,-i 参数表示将使用新的内容对源文件进行修改

在某行的前一行或后一行添加内容

即不知道在第几行操作,只给出了某行的内容。

在某行前插入一行:sed -i '/xxx/i\yyy' filename。i表示插入,即在名称为filename的文件中,内容为xxx的行前插入内容为yyy的行
在某行后追加一行: sed -i '/xxx/a\yyy' filename。 a表示追加,即在名称为filename的文件中,内容为xxx的行后追加内容为yyy的行

比如test文件内容为:

[root@control ~]# cat test
aaa
bbb
ccc
ddd
ccc

我们在test文本中,行内容为ddd前插入一行555:

[root@control ~]# sed '/ddd/i\555' test 
aaa
bbb
ccc
555
ddd
ccc

由于我们使用sed时,没有使用-i参数,所以修改后的内容并不会添加到test文件中。要想修改test文件则添加i参数。同理

在某行前或后加一行内容

即在知道行号的前提下,进行操作

操作:sed -i 'N;Miyyy' filename N表示对行操作,M表示行号,i表示动作即在文件名为filename的M行前插内容为yyy的一行
sed -i 'N;Mayyy' filename 同上,不过a表示追加。

同样对test进行操作:

[root@control ~]# sed 'N;4ai666' test 
aaa
bbb
ccc
ddd
i666
ccc

统计行数

可使用wc命令

// 参数-l 表示行 -w表示words
[root@control ~]# wc -l test
5

或使用NR和tail

// tail -nk 表示输出最后k行
// print NR 打印出行的标号,1,2,3,4,5.
[root@control ~]# awk '{print NR}' test | tail -n1
5

对列的操作

方法:对列的操作主要使用awk去获取某一列,然后进行拼接来完成对某一列的删除、增加。 使用awk时,NR代表行

提取某列

操作:awk '{print $i}' $i代表某列,当然可在其中添加if判断语句

比如,test内容为:

[root@control ~]# cat test 
aaa dss uuu
bbb fds iii
ccc xxx lll
ddd 222 ttt
ccc 333 yyy

现在获取第二列

[root@control ~]# awk '{print $2}' test
dss
fds
xxx
222
333

添加列

操作: 简单方法,使用print进行拼接

给test的第一列添加内容为uuu的一列,每列以空格间隔。

awk '{print "uuu " $1" " $2" " $3}' test
uuu aaa dss uuu
uuu bbb fds iii
uuu ccc xxx lll
uuu ddd 222 ttt
uuu ccc 333 yyy

取出test的前两行

NR表示行,使用if条件判断

[root@control ~]# awk '{if(NR <= 2){print}}' test
aaa dss uuu
bbb fds iii

参考

https://www.cnblogs.com/dirt2/p/5991033.html
http://www.361way.com/sed-process-lines/2263.html
https://www.cnblogs.com/tdtdttdd/p/6901757.html
https://www.cnblogs.com/mikasama/p/8032389.html

2019-09-03 17:19:16 weixin_45476292 阅读数 9
  • 玩转Linux:常用命令实例指南

    本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通 。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 注意: 1、本课程原价99元,现在仅需29元!购课就送5门价值300元的编程课! 2、购课后登陆csdn学院官网,在课程目录页面即可下载课件。 学完即可轻松应对工作中 85% 以上的 Linux 使用场景 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本课程【现在享受秒杀价39元】 3)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 注意: 1)现在购买至少享受60元优惠; 2)购课后添加微信eduxy-1,发送订单截图领取300元编程礼包。 --------------------------------------------------------------- 这门课程,绝对不会让你觉得亏! 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+300元编程礼包。   人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。   在这门课中,我们保证你能收获到这些 1)快速掌握 Linux 常用命令及配置 2)Linux核心知识点 3) 文件、进程、磁盘、用户管理,以及网络工具命令、文件传输等 4)Vi/Vim编辑器用法  

    7178 人正在学习 去看看 良许

Linux学习笔记

1、列出目录下所有文件,包含隐藏文件

$ ls -al

2、语系修改,使其支持中文名

$ LANG=zh_CN.GBK
$ export LC_ALL=zh_CN.GBK

查看修改后的语系信息

$ locale

3、查看某年月的日历

$ cal 8 2019

4、命令帮助

$ date --help

$ man date

5、正确关机

查看系统使用状态,包含谁在使用,网络状态、运行中程序

$ who
$ netstat -a
$ ps -aux

将数据同步写入硬盘后再关机(#表示使用root权限)

# sync
# /sbin/shutdown -h 10 'I will shutdown after 10 mins'

系统重启

# reboot
没有更多推荐了,返回首页