linux文本分析工具grep、sed和awk打印输出文本的单双奇偶行(grep也可以打印奇偶行)以及熟悉的ssh命令却有你不知道的一些用法

一、linux文本分析工具grep、sed和awk打印输出文本的单双奇偶行(grep也可以打印奇偶行)

    其实sed和awk要打印输出奇偶行是很容易的事情,不过只能使用grep来输出奇偶行的话怎么实现呢?今天我就想了一下,如果真的只能使用grep来输出奇偶行的话,能不能实现?怎么实现?当然这个只当玩玩了,毕竟有awk和sed,用grep来实现的必要性不大。

    如果你不看这篇文章,你可以先自己想想怎么实现?我刚才也开始想这事,开始我觉得好像没法实现,但是我又想只有想不到,没有做不到。于是我真花了几秒钟想了一下,确实可以实现,实现如下:做了一个测试文件testnum.txt共计12行文本,使用grep打印输出奇偶行如下:

[online@G18 ~]$ cat testnum.txt 35606 1discover31534 2index1119 3yestest2136 4someuser3211 T9330+21 RACCUA111 P11HD321 4Gkermit 007kermit 007.cn
007cn 007.cn
007cn www.007.cn
#grep直接打奇偶行好像行不能,因为选项属性里没有直接的奇偶判断逻辑,可以换一个想法:
[online@G18 ~]$ grep -n '' testnum.txt | grep  '[24680]:'
2:  31534 2index
4:   2136 4someuser
6:     21 RACCUA
8:    321 4G
10: kermit 007.cn
12:007cn www.007.cn
#这样便匹配出了偶数行
[online@G18 ~]$ grep -n '' testnum.txt | grep  '[24680]:' | grep -o -E '[^:]*$'31534 2index2136 4someuser21 RACCUA321 4Gkermit 007.cn
007cn www.007.cn
#这样便匹配出了奇数行
[online@G18 ~]$ grep -n '' testnum.txt | grep  '[13579]:' | grep -o -E '[^:]*$'     35606 1discover1119 3yestest3211 T9330+111 P11HDkermit 007
007cn 007.cn

        对于awk,sed来说,匹配出奇偶行那是awk,sed的长项了。比如使用awk可以有多种方法来匹配。比如使用行记录号NR来判断,也可以使用自增变量来判断。

#通过NR值对2求余判断取奇数行
[online@G18 ~]$ awk 'NR%2' testnum.txt  35606 1discover1119 3yestest3211 T9330+111 P11HDkermit 007
007cn 007.cn
#下面这条命令取反,即是取的偶数行
[online@G18 ~]$ awk '!(NR%2)' testnum.txt 
#使用自增计算来判断奇偶行,如下取偶数行:
[online@G18 ~]$ awk 'i++%2' testnum.txt 31534 2index2136 4someuser21 RACCUA321 4Gkermit 007.cn
007cn http://47.93.183.36
#如下则为取奇数行
[online@G18 ~]$ awk '!(i++%2)' testnum.txt
#换一个写法,使用++i来试一下,如下取的是奇数行
[online@G18 ~]$ awk '++i%2' testnum.txt       35606 1discover1119 3yestest3211 T9330+111 P11HDkermit 007
007cn 007.cn
#相反这取的就是偶数行
[online@G18 ~]$ awk '!(++i%2)' testnum.txt 
#上面所有的写法里都省略了{print $0}部分,因为这是默认的,实际和下面的命令意义一样。
[online@G18 ~]$ awk '!(++i%2) {print $0}' testnum.txt 

        对于sed命令,使用起来也是一样方便。sed命令中使用-n 1,2p(表示取第1到第2行)也可以使用1,+2p(从第一行和后面的2行)还有一种用法是1~2p(表示从第一行开始,每2行输出),即~表示步长的意义,后面的值即是步长的值。三者的示例如下:

[online@G18 ~]$ sed -n 1,2p testnum.txt 35606 1discover31534 2index
[online@G18 ~]$ sed -n 1,+2p testnum.txt 35606 1discover31534 2index1119 3yestest
[online@G18 ~]$ sed -n 1~2p testnum.txt   35606 1discover1119 3yestest3211 T9330+111 P11HDkermit 007
007cn 007.cn

二、熟悉的ssh命令却有你不知道的一些用法

    ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。一般系统都已装好,如果没有,使用以下安装(centos),如果ssh登录时出现问题在排除其它网络权限问题的情况下可以考虑重装ssh,相关命令如下:

#安装ssh
[root@kur15z ~]# yum install -y openssh-server openssh-clinets
#删除重装ssh
[root@kur15z ~]# yum remove openssh*;rm -rf /etc/ssh*;yum install -y openssh*;systemctl start sshd.service

ssh命令用法: ssh 选项 参数 , 其中可用选项如下:

-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-l:指定连接远程服务器登录用户名;
-N:不执行远程指令;
-o:指定配置选项;
-p:指定远程服务器上的端口;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。
#参数一般是远程主机以及执行指令

远程主机:指定要连接的远程ssh服务器;
指令:要在远程ssh服务器上执行的指令,但注意如果有指令,ssh不会跳至远程机器,执行完后会仍在本机。

#使用示例如下:
[root@kur15z ~]# ssh 114.215.80.214
Last login: Tue Sep 25 13:58:44 2018 from 124.212.96.19
Kermit: 114.215.80.214  快捷命令如下:
Welcome to server:80.214
[root@kur15z ~]#

    如果注意以上命令会发现,在使用ssh的时候,并没有提示输入密码,对,这就是已经实现了ssh免密跳转,和之前这篇文章里的实现是一样的:(可在本博客中通过搜索相关文章:rsync通过ssh的文件同步传输以及免密码传输的实现 ) 即是在本机执行ssh-keygen -t rsa 命令得到id_rsa.pub文件并将此文件放至目标机器/用户/.ssh/authorized_keys中即可(注意此文件权限)。这里可以使用ssh-copy-id命令,它可将本机的公钥直接复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的/home/username/.ssh和~/.ssh/authorized_keys的权利。
    在上面的ssh命令选项中,常用的选项也就是-l和-p了,分别用于指定ssh登录的用户和端口,如ssh -l hello -p 20001 114.215.80.214即表示使用用户hello登录服务器的20001端口,默认不写时用的就是root用户,另外也可以使用@写法。如下:

#使用用户hello登录服务器的20001端口
ssh -l hello -p 20001 114.215.80.214
ssh -p 20001 hello@ 114.215.80.214
#默认就是root用户和22端口,所以以下写法功能是一样的
[root@kur15z ~]#ssh 114.215.80.214
[root@kur15z ~]#ssh root@114.215.80.214
[root@kur15z ~]#ssh -p 22 root@114.215.80.214   
[root@kur15z ~]#ssh -l root -p 22 114.215.80.214
#下面这条命令有点不一样,后面加了一条命令ls -l,此命令是在目标机器上执行的,但是显示到本地,执行后仍在本机。
[root@kur15z ~]#ssh 114.215.80.214 ls -l
#ssh -copy-id使用示例
[root@kur15z ~]#ssh-copy-id user@ip 
[root@kur15z ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub user@ip

    ssh的使用的时候是受目标服务器控制的,细心看一下,上面在使用ssh示例演示的时候,进入到新的服务器时会有Last login的时间提示以及其它提示信息,这里都是在目标服务器上的配置起的作用。ssh的配置文件/etc/ssh/sshd_config中有如下配置项:

PrintMotd yes
PrintLastLog yes
#几项常用的配置,是否允许root用户ssh登录
#PermitRootLogin yes
PermitRootLogin no
#默认的ssh端口
Port 22
#以下两项配置使用no可加快ssh登录
UseDNS no
GSSAPIAuthentication no
#sshd的重启
[root@kur15z ~]# service sshd status
openssh-daemon (pid  1381) is running...
[root@kur15z ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@kur15z ~]# 

    PrintMotd即表示从远程登录此服务器时是否显示提示信息,打开此项后编辑文件:/etc/motd文件,此文件里即是提示的内容。PrintLastLog即表示自动显示上一次的最后登录时间,但是光打开这项不够,还需要在/var/log/文件夹里添加lastlog文件夹才能生效。在ssh的配置文件中还有几项常用:PermitRootLogin和Port端口设置、空闲超时时间等,修改sshd_config文件要生效是需要重启sshd的:service sshd restart

        有一篇文章总结的挺全的,记录一下:​https://www.cnblogs.com/kevingrace/p/6110842.html​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode 1897 】重新分配字符使所有字符串都相等 —— 数组模拟哈希表

给你一个字符串数组 words(下标 从 0 开始 计数)。 在一步操作中,需先选出两个 不同 下标 i 和 j,其中 words[i] 是一个非空字符串,接着将 words[i] 中的 任一 字符移动到 words[j] 中的 任一 位置上。 如果执行任意…

Latex 插入图片或表格导致页面空白过多

如图所示: Latex 插入图片或表格导致页面空白过多 我们可以采用这个方式来减少空白。 \documentclass{article} \usepackage{graphicx} % 包含图形支持 \usepackage{caption} % 提供更多对caption的控制% 设置标题上方和下方的间距 \setlength{\abovecaptionskip}{…

学习记录:js算法(十二):柱状图中最大的矩形

文章目录 柱状图中最大的矩形我的思路网上思路 总结 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1:上图 输入:…

mac 安装Arthas

mac安装有两种方式 1.第一步安装Arthas 第一种: curl -L https://arthas.aliyun.com/install.sh | sh 第二种jar包形式 curl -O https://arthas.aliyun.com/arthas-boot.jar个人比较推荐第一种因为运行测试成功了 第一种安装后可能会出现一些命令不符合 需…

网安新声 | 从微软“狂躁许可”漏洞事件看安全新挑战与应对策略

网安加社区【网安新声】栏目,汇聚网络安全领域的权威专家与资深学者,紧跟当下热点安全事件、剖析前沿技术动态及政策导向,以专业视野和前瞻洞察,引领行业共同探讨并应对新挑战的策略与可行路径。 近期,微软披露了一个最…

CyberScraper-2077+simple-one-api:使用大模型爬虫

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 swift与Internvl下的多模态大模型分布式微调指南(附代码和数据&#xff…

C语言典型例题50

《C程序设计教程(第四版)——谭浩强》 例题4.2 使用do……while语句循环求1234……100; 代码: //《C程序设计教程(第四版)——谭浩强》 //例题4.2 使用do……while语句循环求1234……100;#incl…

web后端(javaEE)开发——servlet

目录 一、web后端开发概述 二、web后端开发环境搭建 1.安装服务器软件 2.安装JDK 三、创建web后端项目 1.创建项目 2.修改设置 3.*在IDEA中集成Tomcat* 四、Servlet创建和应用 1.概述 2.Servlet程序创建与配置 3.分析Servlet程序结构 一、web后端开发概述 web开发&a…

Flutter ListView 实现不同样式 item

我们在实际开发中会创建显示不同类型内容的列表。以下是使用 Flutter 创建此类结构的方法: 1. 创建包含不同类型项目的数据源。 2. 将数据源转换为小部件列表。 创建包含不同类型项目的数据源 项目类型 要表示列表中不同类型的项目,请为每种类型的项目…

基于STM32开发的智能水箱液位控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化液位监测与控制水泵控制与状态显示Wi-Fi通信与远程监控应用场景 家庭用水系统的液位控制工业水箱的液位管理常见问题及解决方案 常见问题解决方案结论 1. 引言 智能水箱液位控制系…

Python----爬虫

开发一个比价系统来监控和分析电商平台的商品价格,可以帮助商家了解市场动态,避免不必要的价格战。这样的系统通常包括以下几个关键组件: 1. 数据抓取(Web Scraping): - 使用爬虫技术从各大电商平台抓取…

最近最少使用数据结构(LRU)

抛开算法刷题的角度&#xff0c;LRU数据结构可根据访问时间远近自动排序&#xff0c;在有些场景下还是很有用的&#xff0c;如统计用户活跃度&#xff0c;API调用热力图分析&#xff0c;缓存块管理等。下面基于c模板提供一个通用的LRU类&#xff0c;以供参考。 #include <f…

初学Python如何快速入门(内附详细攻略),一文讲清

目前python可以说是一门非常火爆的编程语言&#xff0c;应用范围也非常的广泛&#xff0c;工资也挺高&#xff0c;未来发展也极好。 Python究竟应该怎么学呢&#xff0c;我自己最初也是从零基础开始学习Python的&#xff0c;给大家分享Python的学习思路和方法。一味的买书看书…

docker私有仓库创建与推送

仓库创建 1、拉取私有仓库镜像 docker pull registry 2.创建私有仓库容器 docker run -di --name registry -p 5000:5000 -v /data/docker_registry:/var/lib/registry registry-d&#xff1a;后台运行容器&#xff1b;–name&#xff1a;为创建的容器命名&#xff1b;-p&a…

Windows 上设置 MySQL 的主从复制

Windows 上设置 MySQL 的主从复制 一、前言1. 环境准备2. 主服务器配置3. 从服务器配置6. 测试复制7. 注意事项 一、前言 MySQL 主从复制可以在程序中通过以下方式应用&#xff1a; 读写分离&#xff1a;将写操作&#xff08;如插入、更新、删除&#xff09;发送到主服务器&am…

C语言基础(十二)

指针的用法&#xff1a; 测试代码1&#xff1a; #include "date.h" #include <stdio.h> // 函数声明&#xff0c;用于交换两个整数的值&#xff0c;通过指针传递 void swap(int *a, int *b); int main() { int time getTime();int nums[3] {3, 1, 4};…

【Python】列表和元组

文章目录 概念创建列表访问下标通过下标来修改列表元素获取列表长度下标可以写成负数 切片操作省略后边界省略前边界省略前后边界带有步长的切片 遍历列表元素使用 for 循环使用 for 循环访问下标的方式使用 while 循环 新增元素在末尾新增在任意位置新增 查找元素判定元素是否…

ESP RainMaker OTA 自动签名功能的安全启动

【如果您之前有关注乐鑫的博客和新闻&#xff0c;那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注&#xff0c;建议先查看相关信息&#xff0c;知晓本文背景。】 在物联网系统的建构中&#xff0c;安全性是一项核心要素。乐鑫科技对系统安全给予了极高的重视。ES…

【C# 】使用List<实体类>

1. 使用List<实体类> 要在C#中使用List<EntityTemp>并实现查找数据输出&#xff0c;首先需要定义EntityTemp类&#xff0c;并创建一个List<EntityTemp>类型的列表。然后&#xff0c;你可以使用LINQ或其他方法来查找和输出数据。 假设EntityTemp类具有一个…

Transformer总结(三):组件介绍(位置编码,多头注意,残差连接,层归一化,基于位置的前馈网络)

文章目录 一、位置编码1.1 介绍1.2 简单探讨 二、多头注意力2.1 一般的多头注意力机制2.2 解码器中的掩码多头注意力机制&#xff08;Look-ahead Mask&#xff09; 三、残差连接四、层归一化4.1 对比不同的Normalization4.2 Batch Normalization的实现4.3 Layer Normalization的…