我的数据如下:
TEST1
AAAAA MUTUAL
BBBBB MUTUAL
CCCCC MUTUAL
TEST2
DDDDD SINGLE
EEEEE SINGLE
FFFFF SINGLE
如何在Unix Solaris中更改Shell脚本?
AAAAA TEST1
BBBBB TEST1
CCCCC TEST1
DDDDD TEST2
EEEEE TEST2
FFFFF TEST2
答案 0 :(得分:2)
awk 'NF==1{val=$1; next}{ $2 = val}1' infile
# or
awk 'NF==1{val=$1; next}{ print $1, val }' infile
如果要在Solaris / SunOS系统上尝试此操作,请将脚本开头的awk更改为/usr/xpg4/bin/awk
或/usr/xpg6/bin/awk
或nawk
说明:
NF==1{val=$1; next}
如果记录/行/行中的字段数不等于1,则将第一列保存在变量val
next
停止处理更多条件,转到下一行
{ $2 = val}
将保存的值设置为第二个字段(因此这里将修改未跳过的行/记录/行)
1
执行默认操作,即打印当前/记录/行,打印$ 0。要知道awk是如何工作的,请使用awk'1'infile,它将打印所有记录/行,而awk'0'infile则不打印任何内容。除零以外的任何数字都为真,这会触发默认行为。
答案 1 :(得分:0)
如果有帮助,请您试试并告诉我。
nawk '/^TEST/{val=$0;next} {print $1,val}' Input_file