日常shell使用小结
1. linux下文件转码(GB2312转UTF8)
vim打开文件后set fileencoding=utf-8 适用打开单个文件修改的情况
iconv -f GBK -t UTF-8 input -o output 使用iconv转码, 适用脚本中批处理生成带BOM的UTF8文本
echo -e -n "\xef\xbb\xbf" > file 以二进制方式将BOM标记写到file中, 再将真正的文件内容写入file
使用方法:用/包括的内容即正则表达式 与正则表达式比较时需用~表示匹配(!~表示不匹配) 其余同shell下表达式写法
i.e.
打印hisi vo信息,只选取标题与第三通道信息
cat /proc/umap/vo | awk -F\ '{if($1~/[^0-9]+/ || $2=="3")print $0}'
对比下不使用正则的办法
cat /proc/umap/vo | awk -F\ '{if(($1!="0"&&$1!="1"&&$1!="3") || $2=="3")print $0}'
打印hisi vpss信息,只选取标题与第三通道信息 注意退格用\t
cat /proc/umap/vpss | awk -F\ '{if ($1~/[^0-24-9]+/)print "VpssGrp:\t" $0}'
TIPS:
单独写awk脚本时头部需添加#! /bin/awk -f
分隔符的设置: awk -F xxx 或 awk 'BEGIN{ FS = xxx }...' 前一种注意转义字符的含义,后一种注意要放在BEGIN段
以单个字符分隔: awk -F "" ...
以一行整体分隔: awk -F "\n" ...
输出分隔符: awk 'BEGIN{a=0;b=0;OFS=" "}END{print a, b}' 设置OFS,另外a与b之间加逗号
输出到文件的方法: -dxxx 输出dump信息到xxx(携带awk自带环境变量) print a > "xxx" 将打印输出到xxx,文件名注意双引号引用,如果追加用>>
/abc
:s//ABC& 或:s//ABC\0
将abc替换为abcABC
使用例1的方法,或
/abc
:s//\=submatch(0)."ABC" 注意\=表达式只能用在替换字符串起始位置,所以例1未使用此方法 详情见:h :s\=
将abc替换为ABCabABC
没想到好方法,笨办法是先替换为ABCabcABC再替换为ABCabABC
vim批量修改
将以abcxxxABC.c(其中xxx为数字)文件中的svn冲突标记删除(不包含1开头的系列)
:args abc[^1]?*ABC.c
/<<<<<<< .working
:argdo g//d
如果提示未保存,可以先:set hidden 然后:argdo :w
/^=======$ (注意别找到注释里的=======)
:argdo g// .,.+3 d
三个参数从左到右依次为输入行 正则表达式 匹配子函式(如存在多个子函式则需填入数组)
注意此处子函式的理解是正则表达式的子函式的理解 而非awk那种分隔符的理解
具体以如下代码举例而言deblank[1]是指正则表达式匹配的第一个子函式(即第一个()中内容) deblank[2]是指正则表达式匹配的第二个子函式(即第二个()中内容)
即如果输入是以制表符开始的行则deblank[1]为制表符后内容deblank[2]为空 如果输入是以四个空格开始的行则deblank[1]为空deblank[2]为四个空格后内容
461 match(deblank[1],/^\t{1}(.*)|^\s{4}(.*)/, deblank); |461 match(deblank[1],/^\t{1}(.*)|^\s{4}(.*)/, deblank);
462 print"=== " deblank[0] |462 print"=== " deblank[0]
463 print"+++ " deblank[1] |463 print"+++ " deblank[1]
464 print"--- " deblank[2] |464 print"--- " deblank[2]
465 if(deblank[1]==""){ |465 if(deblank[1]==""){
466 deblank[1]= deblank[2]; |466 deblank[1]= deblank[2];
467 } |467 }else{
468 |468 prevline =" " prevline;
469 prevline =" " prevline; |469 }
470 } |
转载于:https://www.cnblogs.com/Five100Miles/p/8460123.html
日常shell使用小结相关推荐
- vim中执行shell命令小结
vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls - ...
- python调用shell命令-python调用shell命令小结
在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...
- linux shell 学习小结
学习内容:https://www.linuxdaxue.com/series/linux-shell-series/ 个人笔记如下 1."#!" 是一个约定的标记,它告诉系统这个脚 ...
- Linux下Shell命令小结(转载自StartOS,【原来的雨林木风】)
本文转载自:StartOS,http://www.startos.org/help_11.html. 今天在看新闻时看到雨林木风操作系统什么更新了啊,改名了啊,这些都没有怎么关注, 就把左边的选项卡一 ...
- Shell 开发在运维中的经验总结
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 无论是系统运维,还是应用运维,均可分为"纯手工" ...
- 溢出漏洞利用小结(基础)
shell 获取小结 这里总结几种常见的获取 shell 的方式: 执行 shellcode,这一方面也会有不同的情况 可以直接返回 shell 可以将 shell 返回到某一个端口 shellcod ...
- 时间、时间戳相关小结 - iOS
项目中难免会与时间打交道,故此次围绕时间展开做了一些日常使用的小结; 如下 code 中也是围绕一些日常开发中较为常用的点展开小的方法封装. 具体方法的使用如下: // 2019-02-21 17:3 ...
- linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战
课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...
最新文章
- SpringMVC(三):使用 POJO 对象绑定请求参数值
- 青龙羊毛——火源星球新脚本(搬运)
- 技术名词API/SDK/DLL的非技术层面理解
- 使用 Git Extensions 简单入门 Git
- JAVA进阶开发之(二维数组)
- 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?
- oracle中修改数据库实例监听的ip和端口
- 中国未来5年IP地址需求总量高达345亿
- 表单提交复选框(checkbox)注意事项
- Python空间分析| 03 利用Python进行地理加权回归(GWR)
- C语言Float的存储大小
- 由电子领域延伸的技术视野
- 4.26,最好用的新浪图床GG了,博客满屏的403
- acrobat支持日文粘贴复制
- Ubuntu16.04 安装 卸载 pip
- postgresql chm格式手册
- 怎样修改一篇简历 简历怎么写
- Android加载so库
- mysql日期 select_MySQL_MySql日期查询语句详解,使用DATE_FORMAT方法SELECT * FROM `le - phpStudy...
- 基于PHP+MySQL动漫周边商城销售网站的开发与设计
热门文章
- 聊聊并发(一)——深入分析Volatile的实现原理
- “概率模型与计算机视觉”-林达华
- 程序员面试题精选100题(56)-C/C++/C#面试题(4)
- 面试时算法题的解答思路
- 《大话数据结构》简体中文版勘误
- 大数据预测:成都、郑州等跻身春节十大“瘦身”城市
- 被忽视的Web安全漏洞:如何识别和解决?
- 缓冲区 cin() getline() getchar()
- 这几年遇到的奇葩程序员(1)
- sass 在线转换器