使用awk的问题

时间:2011-04-19 12:52:10

标签: shell awk

  

可能重复:
  problem in using awk

更具体地说,这是我的项目代码

if [ "$FORMAT" = "java" ]; then
        cat $INPUT_FILE | awk -F":" '\
                /^$/ { print "" }\
                /^\/\/.*/ { print "     "$0}\
                /:string:/ { print "    public static final String "$1" = "$3";" }\
                /:char:/   { print "    public static final char "$1" = "$3";" }\

/:ullong:/ { print "    public static final long "$1" = "$3";" }\
                /:ulong:/  { print "    public static final int "$1" = "$3";" }\
                /:long:/   { print "    public static final int "$1" = "$3";" }\
        ' >> $CONST_FILE
fi;

现在我需要截断$ 3(这个值实际上是从另一个文件中读取)分为两部分(仅适用于ullong)。让我们说

$3=1256985361455ULL

我需要截断到1256985361455和ULL。 (只有当它是ullong) 请帮我解决这个问题。

我尝试在下面使用另一个awk,但最终陷入了混乱。

/:ullong:/ { print "    public static final long "$1" = "$3";" }\

1 个答案:

答案 0 :(得分:0)

你是说你只想在$ 3中插入一个空格?只需使用sub:

bash-3.2$ cat input
one two 123456789ULL
one two 123456789UL
bash-3.2$ awk '{ sub( /ULL$/, " ULL", $3 ); print }' input
one two 123456789 ULL
one two 123456789UL