从标签分隔的数据中提取某些数据

时间:2016-02-10 19:22:46

标签: shell unix sh

256-56-8411  Bob      3.61  junior     cs
471-44-7458  Tim      3.45  senior     ce
326-56-4286  Rajesh   2.97  freshman   te
548-66-1124  Eric     2.88  sophomore  ee
447-21-3599  John     2.51  junior     cs
911-41-1256  Rebecca  3.92  senior     cs
854-22-6372  Robin    2.45  freshman   te

此数据由制表符分隔。我需要编写一个shell命令,该命令只显示ID不以" 4"开头的学生。

1 个答案:

答案 0 :(得分:0)

" ID不以4&#34开头;与&#34相同;行不以4"开头在这种情况下。

你可以

  1. 编写一个shell脚本循环遍历您的行并显示那些不以" 4"

    开头的行
    #!/bin/bash
    
    while read line; do
        if [[ $line != 4* ]]; then
            echo "$line"
        fi
    done < "$1"
    
  2. 使用Perl单行程序打印不以&#34; 4&#34;开头的行:

    perl -ne 'print if /^[^4]/' infile
    
  3. 使用awk one-liner做同样的事情:

    awk '/^[^4]/' infile
    
  4. 使用sed one-liner 而非 打印行&#34; 4&#34;:

    sed '/^4/d' infile
    
  5. 通过排除以&#34; 4&#34;

    开头的那些线来获取线条
    grep -v '^4' infile