Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容。...但是用这个脚本的同事很郁闷,因为执行时间比较长,越大的文件越长。于是找我,问我能不能实现一个更快的方案。 我想了一下,觉得之前的设计是脱裤子放屁,明明有更加简单的实现方法。...想办法获得我要截取的内容的开始的行号,然后再想办法获得我想截取的文件的结尾的行号,然后用两个行号来进行截断文件并输出。就可以实现这个效果了。.../bin/bash # 设定变量 log=3.log s='2017-08-01T01:3' e='2017-08-01T01:4' # 根据条件获得开始和结束的行号 sl=`cat -n $log...| cut -f1` el=`cat -n $log | grep $e | tail -1 | sed 's/^[ \t]*//g' | cut -f1` # 获取结果并输出到 res.log 文件
图1 现在,我要将以60至69开头的行放置到另一个名为“OutputFile.csv”的文件中。...图1中只是给出了少量的示例数据,我的数据有几千行,如何快速对这些数据进行查找并将满足条件的行复制到新文件中?...Do Until EOF(1) '读取文件中的一行并将其赋值给ReadLine变量 Line Input #1, ReadLine '将ReadLine...4.Line Input语句从文件号#1的文件中逐行读取其内容并将其赋值给变量ReadLine。 5.Split函数将字符串使用指定的空格分隔符拆分成下标以0为起始值的一维数组。...6.Print语句将ReadLine变量中的字符串写入文件号#2的文件。 7.Close语句关闭指定的文件。 代码的图片版如下: ?
sed 每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed 便结束运行。...对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符(不能对正则表达式使用 y 命令...my 将被替换为**my** \< 词首定位符 /\<my/ 匹配包含以 my 开头的单词的行 \> 词尾定位符 /my\>/ 匹配包含以 my 结尾的单词的行 x\{m\} 连续 m 个 x /9...sed 使用该命令将一个文本文件中的内容加到当前文件的特定位置上。...如果出现My的行不止一行,则在出现My的各行后都读入introduce.txt文件的内容。
2.删除一行 删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。 3.删除换行符 在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。...如果只是想去掉当前的高亮显示,可以使用下面的命令:":nohlsearch"(可以简写为noh)。 21.匹配一行的开头与结尾 ^ 字符匹配一行的开头。$字符匹配一行的末尾。...对于以"dd"删除的整行内容,"P"会把它置于当前行的上一行。"p"则是至于当前行的后一行。也可以对命令"p"和"P"命令使用命令记数。它的效果是同样的内容被取回指定的次数。...或者编辑另一个文件,"'B"命令会再把你带回文件"fab2.java"的最后一行。...离开vi,并放弃刚在缓冲区内编辑的内容。 :wq 将缓冲区内的资料写入磁盘中,并离开vi。 :x 同wq。
2.删除一行 删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。 3.删除换行符 在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。...如果只是想去掉当前的高亮显示,可以使用下面的命令:“:nohlsearch”(可以简写为noh)。 21.匹配一行的开头与结尾 ^ 字符匹配一行的开头。$字符匹配一行的末尾。...对于以"dd"删除的整行内容,"P"会把它置于当前行的上一行。"p"则是至于当前行的后一行。也可以对命令"p"和"P"命令使用命令记数。它的效果是同样的内容被取回指定的次数。...这样一来"dd"之后的"3p"就可以把被删除行的3 份副本放到当前位置。 命令"xp"将光标所在的字符与后一个字符交换。 **32....或者编辑另一个文件,“'B"命令会再把你带回文件"fab2.java"的最后一行。
[超常用] ,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。...将n1行到n2行之间的内容删除 :w :保存当前文件 :e filename:打开文件filename进行编辑 :x:保存当前文件并退出 :q:退出vi :q!...command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 :r!...command:将命令command的输出结果放到当前行 寄存器操作 "?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 "?...---- 注意: 其中s为substitute,%表示所有行,g表示global。 ---- 5.同时编辑2个文件,拷贝一个文件中的文本并粘贴到另一个文件中。
3.删除换行符 在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。 4.撤销 如果你误删了过多的内容。...如果只是想去掉当前的高亮显示,可以使用下面的命令:":nohlsearch"(可以简写为noh)。 21.匹配一行的开或结尾 ^ 字符匹配一行的开头。$字符匹配一行的末尾。...所以"/was$"只匹配位于一行末尾的单词was,所以"/^was"只匹配位于一行开始的单词 22.匹配任何的单字符 .这个字符可以匹配到任何字符。...对于以"dd"删除的整行内容,"P"会把它置于当前行的上一行。"p"则是至于当前行的后一行。也可以对命令"p"和"P"命令使用命令记数。它的效果是同样的内容被取回指定的次数。...或者编辑另一个文件,"'B"命令会再把你带回文件"fab2.java"的最后一行。
sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。...对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符(不能对正则表达式使用...sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上。...如果出现My的行不止一行,则在出现My的各行后都读入introduce.txt文件的内容。...6.9 c\ 命令 sed使用该命令将已有文本修改成新的文本。 6.10 n命令 sed使用该命令获取输入文件的下一行,并将其读入到模式缓冲区中,任何sed命令都将应用到匹配行紧接着的下一行上。
2.删除一行 删除一整行内容使用“dd”命令。删除后下面的行会移上来填补空缺。 3.删除换行符 在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是“J”。...如果只是想去掉当前的高亮显示,可以使用下面的命令:“:nohlsearch”(可以简写为noh)。 21.匹配一行的开头与结尾 ^ 字符匹配一行的开头。$字符匹配一行的末尾。 ...对于以“dd”删除的整行内容,“P”会把它置于当前行的上一行。“p”则是至于当前行的后一行。也可以对命令“p”和“P”命令使用命令记数。它的效果是同样的内容被取回指定的次数。...然后在“fab2.java”文件中,用命令“GnB”在最后一行设置名为B的标记。在可以用“F”命令跳转到文件“fab1.java”的半中间。...或者编辑另一个文件,“‘B”命令会再把你带回文件“fab2.java”的最后一行。
大家好,又见面了,我是你们的朋友全栈君。 在我们处理文件时,很多时候会用到查找与替换。当我们想将文件中某一部分替换替换文件中另一部分时,怎么办呢? 下面正则表达式 给我提供方法。...这些标签可以用在当前正则表达式中,或则替search和replace中的换字符串。 \1, \2, etc 在替换中代表1到9的标签区域(\1 to \9)。...例如, 查找字符串 Fred([1-9])XXX 并替换为字符串 Sam\1YYY的方法,当在文件中找到Fred2XXX的字符串时,会替换为Sam2YYY。...^ 匹配一行的开始(除非在集合中, 如下). $ 匹配行尾. * 匹配0或多次, 例如 Sa*m 匹配 Sm, Sam, Saam, Saaam 等等. + 匹配1次或多次,例如 Sa+m 匹配 Sam...=name) 匹配名为name的组. (?P…). (?#comment) 批注 –括号中的内容在匹配时将被忽略。 3 特殊符号 符号 解释 \s 匹配空格. 注意,会匹配标记的末尾.
的字符串替换为pattern2 这个操作不知道大家会不会联想到vim编辑器中的底行模式搜索,它们是类似的。...action: a:追加,在当前行后添加一行或多行。 c:行替换,用c后面的字符串替换原数据行。 i:插入,在当前行前插入一行或多行。 p:打印,输出指定的行。...3.再来介绍一下sed中的定址 定址用于决定对文件中哪些行进行行编辑,地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。... 例1:给每行后面添加一行空行 例2:用sed模拟倒序(tac)打印的过程 例3.追加匹配行到文件末尾 例4:将一列内容变为一行 例5:求出1-100的求和 例6:打印输出奇数行和偶数行...test将被替换为*test* \<:词⾸首定位符 /\<my/ 匹配包含以my开头的单词的行; \>:词尾定位符 /my\>/ 匹配包含以my结尾的单词的行; x\{m\}:连续m个
处理时,把当前处理的行存储在临时缓冲区中,称为”模式空间”( oattern space),接着用sed命令处理缓冲区中的内容,处理成后,把缓冲区的内容送往屏幕显示。...接着下一行,这样不断重复,直到文件末。文件内容没有改改变,除非使用了写入的命令,将内容更新。 定址用于决定对哪些进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。...如果没有指定地址,sed将处理输入文件的所有行。 sed命令功能 命令 功能 a\ 在当前行后添加一行或多行。...多行时除最后一行外,每行末尾需用“\”续行 c\ 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行 i\ 在当前行之前插入文本。...对所选行以外的所有行应用命令 s 用一个字符串替换另一个 g 在行内进行全局替换 w 将所选的行写入文件 x 交换暂存缓冲区与模式空间的内容 y 将字符替换为另一字符(不能对正则表达式使用
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。...w # 表示把行写入一个文件。 x # 表示互换模板块中的文本和缓冲区中的文本。.../p’ file 直接编辑文件 选项-i ,会匹配file文件中每一行的所有book替换为books: sed -i 's/book/books/g' file 全面替换标记g 使用后缀 /g 标记会替换每一行中的所有匹配...里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面: sed '/test/r file' filename 写入文件:w命令 在example中所有包含...6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 如果想实现对第一行到第五行统一替换为相同内容
稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模 式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如...搜索则是向上的下一个) N 上一个匹配(同上) :%s/old/new/g 搜索整个文件,将所有的old替换为new :%s/old/new/gc 搜索整个文件,将所有的old替换为...$ 跳至行尾 gg 跳至文件的第一行 gd 跳至当前光标所在的变量的声明处 [N]G 跳到第N行,如0G,就等价于gg,100G就是第100行 fx 在当前行中找...,单字符模式 V 进入可视模式,行模式 ctrl+v 进入可视模式,列模式,类似于UE的列模式 o 跳转光标到选中块的另一个端点 U 将选中块中的内容转成大写 O...跳转光标到块的另一个端点 aw 选中一个字 ab 选中括号中的所有内容,包括括号本身 aB 选中{}括号中的所有内容 ib 选中括号中的内容,不含括号 iB 选中
: :qx 开始记录宏,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器中的宏命令 稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来...搜索则是向上的下一个) N 上一个匹配(同上) :%s/old/new/g 搜索整个文件,将所有的old替换为new :%s/old/new/gc 搜索整个文件,将所有的old替换为...$ 跳至行尾 gg 跳至文件的第一行 gd 跳至当前光标所在的变量的声明处 [N]G 跳到第N行,如0G,就等价于gg,100G就是第100行 fx 在当前行中找...,单字符模式 V 进入可视模式,行模式 ctrl+v 进入可视模式,列模式,类似于UE的列模式 o 跳转光标到选中块的另一个端点 U 将选中块中的内容转成大写 O...跳转光标到块的另一个端点 aw 选中一个字 ab 选中括号中的所有内容,包括括号本身 aB 选中{}括号中的所有内容 ib 选中括号中的内容,不含括号 iB 选中
显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。...d:删除,删除选定的行a:增加,在当前行下面增加一行指定内容i:插入,在选定行上面插入一行指定内容c:替换,将选定行替换为指定内容y:字符转换,转换前后的字符长度必须相同p:打印,如果同时指定行;如果不指定行...n 替换为 1;将 e 替换为 2sed 'y/ne/12/' a.txto12twothr22fourfiv2sixs2v212ight1i12t212l2v21tw2lv2六、在文件中插入内容1.在指定行下面插入内容...P;D' file二 匹配到字符串所在的行的上一行或者是下一行插入一条数据a 追加内容 sed ‘/匹配词/a\要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)i 插入内容...sed ‘/匹配词/i\要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)例:把文件的包含“chengyongxu.com”这个关键词的行前或行后加入一行,内容为“allow
sed 的工作流程主要包括读取、执行和显示三个过程。 读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。...在发送数据后,模式空间将会被清空。 在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。.../THE/g' test.txt //将文件中的所有the 替换为 THE sed 's/o//g' test.txt //将文件中的所有o 删除(替换为空串) sed 's/^/#/' test.txt...'3,5s/the/THE/g' test.txt //将第 3~5 行中的所有 the 替换为 THE sed '/the/s/o/O/g' test.txt //将包含the 的所有行中的 o 都替换为...H:复制到剪贴板; g、G:将剪贴板中的数据覆盖/追加至指定行; w:保存为文件; r:读取指定文件; a:追加指定内容 sed '/the/{H;d};$G' test.txt //将包含the
参数 +LINE[,COLUMN]: 启动时将光标放置在行号行和列号列,而不是默认的第1行第1列。 -?: 与-h相同。...-A, --smarthome: 使Home键更智能,如果在一行中非空格字符的开头但在任何地方按Home键,则光标将跳到该开头(向前或向后),如果光标已经在该位置,它将跳到该行的真实开头。...-E, --tabstospaces: 将键入的制表符转换为空格。 -F, --multibuffer: 如果可用,启用多个文件缓冲区。...-U, --quickblank: 快速清除状态栏,1次按键而不是25次按键后,状态栏消息将消失,请注意-c会覆盖此内容。 -V, --version: 输出版本信息。...-i, --autoindent: 将新行缩进到前一行的缩进中,在编辑源代码时很有用。 -k, --cut: 启用从光标到行尾的剪切。
处理时,把当前处理的行存储在临时缓冲区中,成为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。...七、基本子命令 1、子命令a 子命令a表示在指定行下边插入指定行的内容。 例子1: sed ‘a A’ message 说明:将message文件中每一行下边都插入添加一行内容是A。...2、子命令i 子命令i和a使用上基本上一样,只不过是在指定行上边插入指定行的内容。 例子1: sed ‘i A’ message 说明:将message文件中每一行上边都插入添加一行内容是A。...例子2: sed ‘1,2c A’ message 说明:将message文件中1-2行的内容替换为A,注意这里说的是将1-2行所有的内容只替换为一个A内容,也就是1-2行内容编程了一行,定址如果连续就是这种情况...例子3: sed ‘1,2c A\nA’ message 说明:将message中1-2行内容分别替换为了A,需要在替换内容上手动加换行\n,这样当然也可以将一行内容替换为多行内容。
tr tr命令将文本中的一个字符替换为另一个字符(除非挤压字符),它不直接读取文件,而是从标准输入中读取信息,它的语法如下: tr [-cds] [set1 [set2]] tr命令将字符集set1中的字符替换为字符集...下面是data文件中的内容: $ cat data abc DEF GHi abC 12345 67890 下面的命令将data文件中a替换为X: $ tr a X < data Xbc DEF GHi...先来看-c选项,它匹配所有不在第一个字符集中的字符,比如$ tr -c '\n' X < data将data文件中所有不是\n(换行符)的字符替换为X: $ tr -c '\n' X < data XXX...sed程序从头到尾处理所有数据: 从输入流中读取一行; 对改行执行指定的指令; 将更改写入输出流中。...data文件内容如下: $ cat data abc DEF GHi abC 12345 67890 下面的命令将data文件中第一行的ab替换为CD: $ sed '1s/ab/CD/g' data
领取专属 10元无门槛券
手把手带您无忧上云