添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
很酷的钢笔  ·  解决command not found: ...·  4 月前    · 
高大的木瓜  ·  Matplotlib绘制文本·  1 年前    · 

最近的工作中需要在shell中用命令对一个文本的内容进行处理,前提是忽略文本的第一行,只处理其他行。思考之下发现tail、awk和sed这三个命令均可以实现这一功能,故在此做下记录。

  • 使用tail命令
  • 使用sed命令
  • 使用awk命令

下面就来具体说明下如何使用上述三个命令进行操作。

  1. 使用tail命令的 -n 参数

    tail命令的 -n 参数用来显示文本的最后k行,例如,要显示最后5行,可以使用

    seq 1 10|tail -n 5
       

    6
    7
    8
    9
    10

    在-n的参数值前加上+,用来显示从第k行到最后一行的内容

    seq 1 10|tail -n +5
       

    5
    6
    7
    8
    9
    10

    所以,要只显示除过第一行的其他所有行,可以指定参数-n +2,如下所示:

    head -n +2 your_file
    
  2. 使用awk命令的内置变量NR或者FNR

    在awk命令中,内部变量 NR 用来表示文件中已处理的输入记录数,内部变量 FNR 用来表示当前文件中已处理的记录数。
    当要处理的文件只有一个时,FNR和NR的作用相同。

    所以,要只显示除过第一行的其他所有行,可以指定 NR!=1 或者 FNR!=1 即可,如下所示:

    awk 'NR!=1 { print }' your_file
    

    或者

    awk 'FNR!=1 { print }' your_file
    
  3. 使用sed的-n参数和p替换标记或者使用删除命令

    3.1 使用 -n 参数和 p 标记

    sed命令的 -n 参数的作用是使sed命令不产生输出。

    sed的替换命令中 p 标记的作用是打印与替换命令中指定的模式匹配的行。

    -n 参数和 p 标记结合使用,就可以打印出与指定模式匹配的行。

    所以,要只显示除过第一行的其他所有行,只需要打印从第二行到最后一行即可,行区间可以用 2,$ 表示,
    其中 $ 表示最后一行。

    sed -n '2,$p' your_file
    

    也可以直接指定不需要打印的行,使用 1!p 表示,如下所示:

    sed -n '1!p' your_file
    

    3.2 使用删除命令 d

    sed的删除命令 d ,通过指定行区间,用来删除文本流中的特定行。

    所以,只要从文本内容中删除第一行而打印出其他行即可即可,如下所示:

    sed '1d' your_file
                                        [字,味精] = LE_printViaWord(文件名)
     该函数启动 Word COM 服务器,打开并打印给定的文件。
     COM 服务器句柄作为第一个输出参数 (Word) 返回,建议用户通过在 MATLAB 命令窗口中键入 Quit(Word) 退出服务器。
     调用不带输入参数的函数允许用户选择文件。
     使用示例: [字,味精] = LE_printViaWord; 退出(字)
     请阅读帮助文本。
    这是我为人们用 JavaScript 编写自己的 REPL 编写的一个小型教学工具。
    克隆存储库并在浏览器中打开index.html 。 你会看到一个终端。 此终端的默认为在main.js定义。 它会简单地使用println命令回显您输入的任何内容,除非您输入“img  ”,在这种情况下它会输出一个图像。 您可以编辑main.js文件以更改终端的为。
    应用程序接口
    每当用户在提示下输入内容时, handleInput函数将被调用并传递用户的输入。 它可以重新分配给另一个函数(有关此示例,请参见main.js第 13 )。
     println函数接受一个参数,并将该参数打印到控制台。 参数可以是字符串或 HTML 节点。
    有用的文档
    您可能会发现以下 JavaScript 功能很有用:
      - 允许您将字符串与正则表达式进匹配。
                                        sed找到关键字所在并将其前面的第一个字符删除:
     代码如下:sed -i ‘/httpd-vhosts/s/^#//’  httpd.conf#Include conf/extra/httpd-vhosts.conf   
    说明:以 httpd-vhosts 为关键字找到这,并将前面的第一个字符删掉,即将#删掉。
                            您可能感兴趣的文章:查看某时间段到现在的系统日志的sed命令linux之sed命令的用法一天一个shell命令 linux文本内容操作系列-sed命令详解linux中sed命令使用与注意小结
    sed是stream editor(流编辑器)的缩写。它能够完美匹配正则表达式。sed和awk是文件编辑最重要的两个命令了。尤其涉及到了很多正则表达式的问题,笔者不敢也有点犯怵,试着写写。
    1.替换文件中的字符串
    $sed -i ‘s/text/replace/g’ file
    #如果不加g结尾,则替换每一的第一个
    #如果只是打印去掉-i
    2.忽略前N处匹配,从N+1出开始替换
    $sed -i ‘s/text/replace/2g’ file
    #在g前面加入数字N
    3.移除空白符
    $sed ‘/^$/d’ file
    4.标记已匹配的内容
    $echo this is an ex
                                        在做数据分析式如果给到的原数据是文本格式,在数据中经常会有如下情况的:
          数据中的第一行是我们分析所不需要的,我们需要删除第一行的数据。用到的shell命令为:sed -i '1d'  txtfilename(sed -i表示将改动直接写入到原文件里)。
       如果我们有成批量的这样的数据,用到的命令为:for i in `ls`; do sed -i '1
                                        sed 是文本处理工具,读取文本内容,根据指定的条件进处理,如删除、替换、添加等;可在无交互的情况下实现相当复杂的文本处理操作工作原理:读取👉执👉显示读取:sed从输入流(文件、管道、标准输入)中读取一内容并存储到临时的缓冲区(又称模式空间,pattern space)执:默认情况下,所有的sed命令都在模式空间中顺序地执,除非指定了的地址,否则sed命令将会在所有的上依次执。显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
                                        删除文件中包含某个关键字开头的所有:sed -i '/^QWQ/d' <file>删除文件中的某一:sed -i '3d' <file>     --以第3为例。删除文件中包含某个关键字的所有:sed -i '/QWQ/d' <file>读取文件的最后一: tail -n -1 file.txt。读取文件的第一行:head -n +1 file.txt。删除文档的最后一:sed -i '$d' <file>删除文档的第一行:sed -i '1d' <file>
    比较文件的方法:
    1)comm -3 --nocheck-order file1 file2
    2) grep -v -f file1 file2:  输出file2中有file1中没有的
    diff file1 file2...