sed 用法总结

一个不错的网站,C语言中文网,包罗万象,非常详细:http://c.biancheng.net/ 1.sed替换换行符及标签的使用

解析:以上命令实现不了替换换行符,这跟sed的行处理方式有关,sed读取一行时,会先把换行符去掉,处理完后再添加上,所以是无法使用上面的命令进行换行符替换的,必须使用sed中的其它命令来完成。上面的恢复可以使用tr命令:

以下命令能实现替换文本中全部换行符:

解析: :label;  这是一个标签,用来实现跳转处理,名字可以随便取(label),后面的b label就是跳转指令 N;  N是sed的一个处理命令,追加文本流中的下一行到模式空间进行合并处理,因此是换行符可见 s/\n/:/;   s是sed的替换命令,将换行符替换为冒号 b label  或者 t label    b / t 是sed的跳转命令,跳转到指定的标签处 2.sed输出奇数行和偶数行 a.

解析:n表示读取下一个输入行,用下一个命令处理新的行而不是第一个命令。 b.

解析:第一个数字表示起始行,第二个数字表示步长。 3.在字符之间插入空格

解析:&表示前面匹配到的内容。   sed -n ‘1,3 p’ a.txt  #sed 命令 -n(sed的命令行选项—-取消标准输出) 1,3 (读到缓冲区处理的地址范围) p(sed命令–这个命令表示要怎样处理缓冲区的内容,p是打印输出缓存区内容) sed -n ‘1,3 Read more…

AWK教程

转自:https://github.com/bo369/awk

oh-my-zsh出现的问题

由于之前的VPS到期了,又买了台VPS,想打造成高逼格的开发环境,结果在装上oh-my-zsh后,.zshrc配置如下:

装了几个插件后,就出现了各种报错,如下只粘了一条,各种命令找不到:

根据经验,应该是PATH设置得不对,但是无论怎么设置,就是不行。 后来各种google,终于找到了解决办法:

一大堆报错没了,但又有了新报错:

shopt报错的原因为:

解决方法:

  其中升级zsh命令为:

2019-05-21: 今天发现, 上下方向键不能搜索命令历史了, 后来统一在如下文件里定义(可以放到~/.oh-my-zsh/lib/key-bindings.zsh , 但是为了好管理, 还是统一放到.zshrc里):

 

shell脚本输出带文本颜色背景颜色自定义样式格式内容

shell脚本中 echo 和 printf 都可以输出内容。示例1:

它的格式是这样的:

格式说明 shell脚本中echo命令是内容显示,echo显示带颜色需要使用参数 -e 格式如下: echo -e “\033[字背景颜色;文字颜色m字符串\033[0m” 例如: echo -e “\033[41;36m something here \033[0m” 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1、字背景颜色和文字颜色之间是英文的”;” 2、文字颜色后面有个m 3、字符串前后可以没有空格,如果有的话,输出也是同样有空格 特效可以叠加,需要使用“;”隔开,例如:闪烁+下划线+白底色+黑字为 \033[5;4;47;30m闪烁+下划线+白底色+黑字为\033[0m 再来看示例1的第3个命令:

  这个命令解释: 47 代表背景色为白色, 30 代表字体为黑色, 5 代表字体闪烁, 0 代表关闭所有属性 输出字符 “david use echo say”,然后重新设置屏幕到缺省设置,输出字符 “Hello World”后颜色回复正常。 -e是echo的一个可选项,用于激活特殊字符的解析器, Read more…

Pycharm补丁激活方式

同时适用于jetbrains全系列可用例:IDEA、WebStorm、phpstor 破解补丁激活 下面以Pycharm为例: 第一步:下载补丁文件 如果是2017.2以上版本的,需要JetbrainsCrack-2.6.6及以上版本 如果是2018.1及以上版本的,需要JetbrainsCrack-2.8及以上版本 下载地址: https://www.meaninglive.com/download/JetbrainsCrack-2.8-release-enc.jar 第二步:将下载好的补丁放在idea的安装目录下面的bin文件夹下面 1.png 第三步:修改配置文件 找到bin目录下的pycharm.exe.vmoptions和pycharm64.exe.vmoptions,用记事本打开,在最后一行添加 (红色字体为Pycharm的安装目录bin目录): -javaagent:D:\E盘\Pycharm\PyCharm 2018.1.4\bin\JetbrainsCrack-2.8-release-enc.jar 第四步:启动Pycharm,当需要激活时,选择activation code,复制注册码到Acrivation code中的空白处,点击OK,破解成功 1>、激活注册码首先需要修改系统的hosts文件 Windows系统hosts文件路径为:c:\windows\system32\drivers\etc 将0.0.0.0 account.jetbrains.com添加到hosts文件最后 修改后请检查hosts文件是否修改,激活码无法激活或者被取消的原因99%是因为hosts没有修改正确

shell截取字符串的方法

grep只输出匹配的内容 1、输出eth0的IP地址 ip -4 addr show “eth0” | grep -oP ‘(?<=inet\s)\d+(\.\d+){3}’ 2、说明 -o 显示被模式匹配到的字符串。 -P 支持正则表达式 (https://deerchao.cn/tutorials/regex/regex.htm#lookaround) (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp 例如: 如下url,只输出文件名第一个iuap-installer_V6.R2_2305_x86_64_5.tar.gz echo “wget -c ‘https://aaa.com/ypr/ypr-release/Installer/iuap-installer/V6.R2_2305/5/iuap-installer_V6.R2_2305_x86_64_5.tar.gz?Expires=113344&OSSAccessKeyId=dfaf23233211&Signature=srBESvEJD0x2OQQhPadfgagagfTZ80Ooo%3D’ -O iuap-installer_V6.R2_2305_x86_64_5.tar.gz” | awk ‘/iuap-installer.*.tar.gz/’ | grep -oP ‘(?<=/)iuap-installer_.*.tar.gz(?=\?)’ 结果只输出 iuap-installer_V6.R2_2305_x86_64_5.tar.gz (?<=/) 断言iuap-installer前面会匹配/ (?=\?) 断言iuap-installer后面会匹配?

制作Docker各版本基础镜像

Python: 传的参数为: build.sh python:2.7-alpine,python:3.8-alpine,python:2.7-stretch,python:3.8-stretch

Tomcat: 传参为: tomcat:7.0.88-jre7-alpine,tomcat:7.0.88-jre8-alpine,tomcat:8.0.52-jre7-alpine,tomcat:8.0.52-jre8-alpine,tomcat:9.0.8-jre8-alpine,tomcat:6.0.48-jdk7-alpine,tomcat:7.0.85-jdk7-alpine,tomcat:7.0.85-jdk8-alpine,tomcat:8.5.28-jdk7-alpine,tomcat:8.5.28-jdk8-alpine,tomcat:9.0.5-jdk7-alpine,tomcat:9.0.5-jdk8-alpine,java:7-jdk-alpine,java:8-jdk-alpine

nginx:

node:

 

Kubernetes & Docker 容器网络终极之战

与 Docker 默认的网络模型不同,Kubernetes 形成了一套自己的网络模型,该网络模型更加适应传统的网络模式,应用能够平滑的从非容器环境迁移到 Kubernetes 环境中。 自从 Docker 容器出现,容器的网络通信一直是众人关注的焦点,而容器的网络方案又可以分为两大部分: 单主机的容器间通信; 跨主机的容器间通信。 一、单主机 Docker 网络通信 利用 Net Namespace 可以为 Docker 容器创建隔离的网络环境,容器具有完全独立的网络栈,与宿主机隔离。也可以使 Docker 容器共享主机或者其他容器的网络命名空间。 我们在使用docker run创建 Docker 容器时,可以使用–network=选项指定容器的网络模式,Docker 有以下 4 种网络模式: host 模式,使用–network=host指定,不支持多主机; bridge 模式,使用–network=bridge指定,默认设置,不支持多主机; container 模式,使用–network=container:NAME_or_ID指定,即joiner 容器,不支持多主机; none 模式,使用–network=none指定,不支持多主机。 1.1、host 模式 连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。 我们先查看一下主机的网络。

Read more…

FreeIPA删除记录时报 record not found的错误

DNS服务器之前加过一条DNS Forward Zones, 后来删除时出现了报错, 报DNS record not found的错误. 下面是报错时的截图: 原因: dns里删除了此记录, 但是ldap里还存在. 解决: 手动删除ldap里的记录 首先, 查询所有记录:

经过查看发现, 有问题的记录是:

  手动删除记录:

  再次刷新页面, 发现记录已被删除

jenkins更改admin密码

找了半天, 从页面上没找着修改admin超级管理员密码的地方,只能从配置文件着手了: Jenkins 配置文件存放在用户目录下.jenkins中 例如root用户在路径  /root/.jenkins/ 其他用户在 /home/user/.jenkins/ cd  /root/.jenkins/ 在 .jenkins目录下有一个users目录,存放用户信息 cd users user目录下找到你的帐号目录,例如你的登录帐号是admin,那么目录就是admin cd admin 该目录下有个config.xml文件

  passwordHash 字段存放的是加密过后的密码 Jenkins的密码采用的是Java加解密工具 jBCrypt,我也是第一次接触到这种加密方式,实在被他惊叹到了!这种加密方式每次加密同一个明文竟然都是得到不一样的结果,那他又是通过怎样的方式来解密的呢?原来,他拿着用户的明文,和存储的密文去重新生成一串密文去判断。总结如下,它有以下特点: 关于bcrypt: 1、bcrypt是不可逆的加密算法,无法通过解密密文得到明文。 2、bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储的密文一块运算得到另一个密文,如果这两个密文相同则验证成功。   下面, 用python生成加密后的密码:

修改 #jbcrypt:$2a$12$4OqwS9bCDIh3YHsYo5ApJeEqedGF5ehgK1Ei0T1F2E6p6J1c8EhTu 为 #jbcrypt:$2a$12$ldO4lUKecFxyMTgSntrVNuyaeRBIhN1onQvpXf2fQ1asnV6mkESBi 最后重启jenkins   注: 在python2里测试生成加密字符串的过程没有问题,但是在python3会报如下错误:

查找了下原因,是因为python3里,字符串有str和bytes两种形态,所以需要改成

另外,bcrypt有多种标准,我们需要的是2a,所以还要改成:

这样就得到正确结果了。