在unix中编辑文本文件

时间:2014-04-30 13:22:37

标签: bash unix awk

sname;id;is_up;p_data
"0000";4256;100;"052263"
"006335";5228;100;"00522633"
"ABTEST";1452;100;"1522620  0"

如何在unix中编辑上述文件

  1. 在标题和系统日期和时间的顶部添加2行
  2. 在每一行的末尾添加;
  3. 在文件末尾添加结束标记
  4. 最终文件应该是

    !title
    !Time: 2014-12-33
    sname;id;is_up;p_data
    "0000";4256;100;"052263";
    "006335";5228;100;"00522633";
    "ABTEST";1452;100;"1522620  0";
    !End
    

2 个答案:

答案 0 :(得分:3)

使用sed;添加到行尾。如果您想跳过此操作的第一行,请使用地址1!

{
    echo '!title'
    echo -n '!Time: '
    date +%Y-%m-%d
    sed '1! s/$/;/' file
    echo '!End'
} > newfile

答案 1 :(得分:2)

您可以将BEGINEND$0=$0";"一起使用,在不是第一行的行末尾添加;

awk -v d="$(date)" '
                    BEGIN{print "!title"; print "!Time: ", d}
                    NR>1{$0=$0";"} 1;
                    END {print "!End"}
                   ' file

见输出:

$ awk -v d="$(date)" 'BEGIN{print "!title"; print "!Time: ", d} NR>1{$0=$0";"} 1; END {print "!End"}' file
!title
!Time:  Wed Apr 30 15:25:53 CEST 2014
sname;id;is_up;p_data
"0000";4256;100;"052263";
"006335";5228;100;"00522633";
"ABTEST";1452;100;"1522620  0";
!End

对于date格式,您应该定义所需的格式。仅date打印一切。我可能会选择:

$ date "+%F %T"
2014-04-30 15:41:04