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

2. awk使用技巧
awk + regexp
awk也可以使用正则,之前一直没结合试过,今次用了以后才发现方便之处
使用方法:用/包括的内容即正则表达式 与正则表达式比较时需用~表示匹配(!~表示不匹配) 其余同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}'
awk文档参考: http://www.gnu.org/software/gawk/manual/gawk.html
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,文件名注意双引号引用,如果追加用>>
3. vim常用操作
将abc替换为ABCabc
/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
4. awk中match()函数
1. match函数的使用
三个参数从左到右依次为输入行 正则表达式 匹配子函式(如存在多个子函式则需填入数组)
注意此处子函式的理解是正则表达式的子函式的理解 而非awk那种分隔符的理解
具体以如下代码举例而言deblank[1]是指正则表达式匹配的第一个子函式(即第一个()中内容) deblank[2]是指正则表达式匹配的第二个子函式(即第二个()中内容)
即如果输入是以制表符开始的行则deblank[1]为制表符后内容deblank[2]为空 如果输入是以四个空格开始的行则deblank[1]为空deblank[2]为四个空格后内容
460     while(deblank[1]~/^\t|^\s{4}/){                         |460     while(deblank[1]~/^\t|^\s{4}/){
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 ="&nbsp; " prevline;
469         prevline ="&nbsp; " prevline;                        |469         }
470     }                                                         |

转载于:https://www.cnblogs.com/Five100Miles/p/8460123.html

日常shell使用小结相关推荐

  1. vim中执行shell命令小结

    vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls - ...

  2. python调用shell命令-python调用shell命令小结

    在写python脚本的时候,经常需要调用系统命令,常用的python调用系统命令的方法主要有subprocess.call和os.popen.默认情况下subprocess.call的方法结果是返回值 ...

  3. linux shell 学习小结

    学习内容:https://www.linuxdaxue.com/series/linux-shell-series/ 个人笔记如下 1."#!" 是一个约定的标记,它告诉系统这个脚 ...

  4. Linux下Shell命令小结(转载自StartOS,【原来的雨林木风】)

    本文转载自:StartOS,http://www.startos.org/help_11.html. 今天在看新闻时看到雨林木风操作系统什么更新了啊,改名了啊,这些都没有怎么关注, 就把左边的选项卡一 ...

  5. Shell 开发在运维中的经验总结

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 无论是系统运维,还是应用运维,均可分为"纯手工" ...

  6. 溢出漏洞利用小结(基础)

    shell 获取小结 这里总结几种常见的获取 shell 的方式: 执行 shellcode,这一方面也会有不同的情况 可以直接返回 shell 可以将 shell 返回到某一个端口 shellcod ...

  7. 时间、时间戳相关小结 - iOS

    项目中难免会与时间打交道,故此次围绕时间展开做了一些日常使用的小结; 如下 code 中也是围绕一些日常开发中较为常用的点展开小的方法封装. 具体方法的使用如下: // 2019-02-21 17:3 ...

  8. linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战

    课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...

  9. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...

    最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...

最新文章

  1. SpringMVC(三):使用 POJO 对象绑定请求参数值
  2. 青龙羊毛——火源星球新脚本(搬运)
  3. 技术名词API/SDK/DLL的非技术层面理解
  4. 使用 Git Extensions 简单入门 Git
  5. JAVA进阶开发之(二维数组)
  6. 微服务面试必问的Dubbo,这么详细还怕自己找不到工作?
  7. oracle中修改数据库实例监听的ip和端口
  8. 中国未来5年IP地址需求总量高达345亿
  9. 表单提交复选框(checkbox)注意事项
  10. Python空间分析| 03 利用Python进行地理加权回归(GWR)
  11. C语言Float的存储大小
  12. 由电子领域延伸的技术视野
  13. 4.26,最好用的新浪图床GG了,博客满屏的403
  14. acrobat支持日文粘贴复制
  15. Ubuntu16.04 安装 卸载 pip
  16. postgresql chm格式手册
  17. 怎样修改一篇简历 简历怎么写
  18. Android加载so库
  19. mysql日期 select_MySQL_MySql日期查询语句详解,使用DATE_FORMAT方法SELECT * FROM `le - phpStudy...
  20. 基于PHP+MySQL动漫周边商城销售网站的开发与设计

热门文章

  1. 聊聊并发(一)——深入分析Volatile的实现原理
  2. “概率模型与计算机视觉”-林达华
  3. 程序员面试题精选100题(56)-C/C++/C#面试题(4)
  4. 面试时算法题的解答思路
  5. 《大话数据结构》简体中文版勘误
  6. 大数据预测:成都、郑州等跻身春节十大“瘦身”城市
  7. 被忽视的Web安全漏洞:如何识别和解决?
  8. 缓冲区 cin() getline() getchar()
  9. 这几年遇到的奇葩程序员(1)
  10. sass 在线转换器