Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从txt文件unix中选取错误的列值_Linux_Bash_Shell_Unix_Sh - Fatal编程技术网

Linux 从txt文件unix中选取错误的列值

Linux 从txt文件unix中选取错误的列值,linux,bash,shell,unix,sh,Linux,Bash,Shell,Unix,Sh,我不熟悉脚本,我有以下问题: 1.在得到文本文件中的“file:”值后,它应该跳过2行,然后从第2行读取 (-如果我在txt文件中找到“File:”,我想跳过2行。这可能会出现1次以上) i/p文件为: file : noki lab:3232 date : 12/3/16 field length position text name 16 0 1 account name info 1 10 Bank account info city

我不熟悉脚本,我有以下问题: 1.在得到文本文件中的“file:”值后,它应该跳过2行,然后从第2行读取

(-如果我在txt文件中找到“File:”,我想跳过2行。这可能会出现1次以上)

i/p文件为:

file : noki lab:3232 date : 12/3/16
field length position  text 
name   16 0     1      account name
info   1       10      Bank account info
city   3  0    13      bank acc city name
state  4       17      acc state
--在这里,我想跳过我在txt文件中找到的两行“File:”。这可能会发生一次以上

  • 阅读后,我只想选择“归档”和“位置”列数据。 代码:

    awk-F'{print$1,$3}'ip.txt

  • 但我得到的o/p如下:

    name 0
    info 10
    city 0
    state 17
    
    这是错误的,我需要输出:

    name 1
    info 10
    city 13
    state 17
    

    awk
    救援

    $ awk '/^file :/ {c=2} 
           !(c&&c--) {print $1, $(NF-1)}' file
    
    name 1
    info 10
    city 13
    state 17
    
    解释 当模式匹配时,将计数器设置为2,跳过指定的行数,并从其余部分打印第一个和倒数第二个字段

    更新 如果最后一列包含空格,则最简单的(
    gawk
    仅限)


    否则,请花时间修复输入文件的格式。去掉字段之间多余的
    0
    ,将字段分隔符改为tab等。

    awk
    来拯救

    $ awk '/^file :/ {c=2} 
           !(c&&c--) {print $1, $(NF-1)}' file
    
    name 1
    info 10
    city 13
    state 17
    
    解释 当模式匹配时,将计数器设置为2,跳过指定的行数,并从其余部分打印第一个和倒数第二个字段

    更新 如果最后一列包含空格,则最简单的(
    gawk
    仅限)


    否则,请花时间修复输入文件的格式。去掉字段之间多余的
    0
    ,将字段分隔符改为tab等。

    看起来不错。我正在考虑寻找一个shell工具,它可以让我从末尾开始索引,但想不出一个简单的方法来完成它。awk显然很棒,但无法扩展。再说一次,对于这样的事情,它是非常强大的:)谢谢!忘记了这个方便的工具自然存在。非常感谢,它看起来不错,但当文本文件包含以下数据时,它会失败,然后它会选择错误的数据,因为它之间有空格:数据如:Rec ID或bank acc noLooks good。我正在考虑寻找一个shell工具,它可以让我从末尾开始索引,但想不出一个简单的方法来完成它。awk显然很棒,但无法扩展。再说一次,对于这样的事情,它是非常强大的:)谢谢!忘记了这个方便的工具自然存在。非常感谢,它看起来不错,但当文本文件包含以下数据时,它会失败,然后它会选择错误的数据,因为它之间有空格:数据如:Rec ID或bank acc no