shell脚本和vim模式初步学习
来源:互联网 发布:传淘宝需要注意什么 编辑:程序博客网 时间:2024/05/21 00:46
第一次linux作业竟然花了不止4个小时而且只做出两道,真是受不了。
作业的题目如下
如何将文本偶数行合并到奇数行?
两种方式:
1.使用s命令
2.使用g和s命令组合请写出下面面模式的作用
:2,8s/\<four\>/4/g:/\(a[bc]\{2}\)[^abc]\+\1
- 查看$HOME目录下的文件信息,将查询到的信息写入到文件,该文件以“log_用户名年月_日”命名,保存到当前目录(shell脚本相同的目录)下。(注:用户名为当前正在使用的用户名)
一、偶数行合并到奇数行
方法一
g/\n/s// \t
合并前
合并后
原理: 首先标记所有换行符,然后通过s命令把换行符换成制表符,这时第二行就会合并到第一行,第二行的标记被删除,接着就会跑到第三行执行同样操作,如此下去遍完成了偶数行的合并。但又一个疑点,就是为什么将\n替换成” \t”后,从下面的结果可以看出空格的数量不一样??
方法二
:%s/\(^.*$\)\n\(^.*$\)/\1 \2/g
原理: 每次对两行操作,把两行中的第一行替换成空格。 ^.*$匹配一行字符。类似\1 、\2等。
\(^.*$\)
去掉括号 ^.*$
是一个匹配一行字符 的正则表达式,^和$
分别匹配行首和行尾, .
匹配任意一个字符,*
匹配任意长度的任意字符。其中回车符\n不算做.和*
的字符范围内。\1选中的是第一个带有( 和 ) 的匹配该处正则表达式的内容;\2选中的是第二个带有( 和 ) 的匹配该处正则表达式的内容。这样看来,它是每次匹配两行字符,然后将\n提换成空格,替换后的内容就变成了
第一行 空格 第二行
即这里可以把“^.*$“` 替换为一行字符。
替换后的最终结果为
二、模式作用
:2,8s/\<four\>/4/g
原理: 将2-8行的所有four单词换成4,其中不包含fourteen和thirty-four等单词。
\< 匹配单词词首
> 匹配单词词尾
/\(a[bc]\{2}\)[^abc]\+\1
原理: \(a[bc]\{2}\)
匹配 axxx xxx的长度为2,xxx的内容字符范围为[bc]即b或c。由于匹配比较短,我们可以列出所有可能: abc、abb、acc、acb
[^abc] 匹配除abc以外的任意一个字符,长度至少为1(+)
\1指的是这个地方有要匹配(a[bc]{2}),重复其内容。我们可以用这个匹配%s/(^.*$)\n/\1 \1/g检测,可以看出hello重复了两次
执行模式后的结果
所以整个模式的作用是 匹配 abbxxxabb 、abcxxxabc 、accxxxacc 、
acbxxxacb, xxx是 [^abc] 匹配除abc以外的任意一个字符串,因为有\+
所以xxx长度至少为1。
三、shell脚本
查看$HOME目录下的文件信息,将查询到的信息写入到文件,该文件以“log_用户名年月_日”命名,保存到当前目录(shell脚本相同的目录)下。(注:用户名为当前正在使用的用户名)
user=`whoami`mydate=$(date +%Y_%m_%d)filename="log_${user}_${mydate}"echo $filenamelsInfo=`ls -ail $HOME`echo $lsInfo>$filename
最后一行echo $lsInfo>$filename
不能去掉echo,否则会出错,我觉得echo默认输出到屏幕,而这里我们把他输出到文件。
date +%Y_%m_%d是取得时间,其中”+”和date之间必须有空格,%y小写时只显示年的后两位 如2017只显示17;
小提醒: shell对空格极为严格,有很多地方不能随便加空格,否则会出错。
- shell脚本和vim模式初步学习
- vim和shell脚本基础
- Vim编辑器和shell命令脚本
- shell脚本初步
- Shell脚本编程 初步
- 初步认识和学习BASH和shell
- shell脚本篇一---shell脚本初步
- Shell脚本初步(1)
- Shell脚本初步(2)
- Shell脚本学习与Linux下vim命令使用
- shell编程初步学习
- shell初步学习
- shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)
- Vim编辑器与Shell脚本
- shell 脚本echo和printf学习
- shell和shell脚本
- Shell脚本初步学习-鸟哥Linux私房菜基础学习篇
- vim初步知识的学习
- 二叉树的后序遍历
- hive-列转行和行转列
- MyBatis Oracle批量插入
- VR 全景图实现
- JAVA随机数生成 | Math.random()方法 | 随机生成int、double类型
- shell脚本和vim模式初步学习
- js学习-数组(1)
- LruCache源码解析
- 常见的typedef用法总结
- Postgresql快速插入测试数据
- Java注解探究,自定义注解封装简易网络请求框架
- 1019. General Palindromic Number (20)
- 一个非常好的JQuery中文文档网站
- 【LeetCode】Minimum Absolute Difference in BST 解题报告