Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Shell脚本第二列为空,请在第行下粘贴$1_Shell_Unix_Awk_Sed_Grep - Fatal编程技术网

Shell脚本第二列为空,请在第行下粘贴$1

Shell脚本第二列为空,请在第行下粘贴$1,shell,unix,awk,sed,grep,Shell,Unix,Awk,Sed,Grep,我有如下数据: TEST1 AAAAA MUTUAL BBBBB MUTUAL CCCCC MUTUAL TEST2 DDDDD SINGLE EEEEE SINGLE FFFFF SINGLE AAAAA TEST1 BBBBB TEST1 CCCCC TEST1 DDDDD TEST2 EEEEE TEST2 FFFFF TEST2 在Unix Solaris中如何使用Shell脚本进行更改

我有如下数据:

TEST1         
AAAAA MUTUAL  
BBBBB MUTUAL  
CCCCC MUTUAL  
TEST2         
DDDDD SINGLE  
EEEEE SINGLE  
FFFFF SINGLE  
AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
在Unix Solaris中如何使用Shell脚本进行更改

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   

如果要在Solaris/SunOS系统上尝试此操作,请将脚本开头的awk更改为
/usr/xpg4/bin/awk
/usr/xpg6/bin/awk
nawk

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
说明:

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
  • NF==1{val=$1;next}
    如果记录/行/行中没有字段等于1,则将第一列保存在变量
    val

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • next
    停止处理进一步的条件,转到下一行

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • {$2=val}
    将保存的值设置为第二个字段(因此此处将修改未跳过的行/记录/行)

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • 1
    最后执行默认操作,即打印当前/记录/行,打印$0。要了解awk的工作原理,请尝试使用awk“1”infle,它将打印所有记录/行,而awk“0”infle不打印任何内容。零以外的任何数字都为true,这将触发默认行为

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    

如果要在Solaris/SunOS系统上尝试此操作,请将脚本开头的awk更改为
/usr/xpg4/bin/awk
/usr/xpg6/bin/awk
nawk

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
说明:

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
  • NF==1{val=$1;next}
    如果记录/行/行中没有字段等于1,则将第一列保存在变量
    val

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • next
    停止处理进一步的条件,转到下一行

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • {$2=val}
    将保存的值设置为第二个字段(因此此处将修改未跳过的行/记录/行)

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    
  • 1
    最后执行默认操作,即打印当前/记录/行,打印$0。要了解awk的工作原理,请尝试使用awk“1”infle,它将打印所有记录/行,而awk“0”infle不打印任何内容。零以外的任何数字都为true,这将触发默认行为

  • AAAAA TEST1   
    BBBBB TEST1   
    CCCCC TEST1   
    DDDDD TEST2   
    EEEEE TEST2   
    FFFFF TEST2   
    

请尝试以下内容,并让我知道这是否有帮助

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
nawk '/^TEST/{val=$0;next} {print $1,val}'  Input_file

请您尝试以下内容,并让我知道这是否有帮助

AAAAA TEST1   
BBBBB TEST1   
CCCCC TEST1   
DDDDD TEST2   
EEEEE TEST2   
FFFFF TEST2   
nawk '/^TEST/{val=$0;next} {print $1,val}'  Input_file

尝试了什么?尝试了什么?awk:第1行附近的语法错误awk:第1行附近的退出如果要在Solaris/SunOS系统上尝试此操作,请将脚本开头的awk更改为/usr/xpg4/bin/awk或/usr/xpg6/bin/awk或nawkawk:第1行附近的语法错误awk:第1行附近的退出如果要在Solaris/SunOS系统上尝试此操作,将脚本开头的awk更改为/usr/xpg4/bin/awk或/usr/xpg6/bin/awk或nawk