日期:2014-05-16  浏览次数:20823 次

awk for调用system的换行处理
之前相关的已解决问题:http://bbs.csdn.net/topics/390737020

我的程序片段流程如下:

result=`awk for (i=1; i<=NF; i++) {
                    system("system call" | grep ... | sed ...| awk ...)   //输出字符串Ai,返回值0
                    system("system call" | grep ... | sed ...| awk ...)   //输出字符串Bi,返回值0
                    printf ("\n")
              }`
echo $result 


黑体字printf的意思是我想在这里有一个换行,因为上面的程序片段输出是(假设循环三次):
A1 B1 A2 B2 A3 B3

如果我把echo的语句改成echo "${result} ", 那么输出就成了
A1
B1
A2
B2
A3
B3

现在我想输出格式变为(每个for循环的输出严格地在一行中):
A1 B1
A2 B2
A3 B3

由于程序还有其他的格式处理和错误处理,无法先单行输出然后再合并,请问该如何做能实现上面的输出?

多谢!
------解决方案--------------------
echo A B C 
------解决方案--------------------
 awk '{
    for(i=1;i<=3;i++){
        system("echo 1 2 3 
------解决方案--------------------
 grep 3 
------解决方案--------------------
 sed 's/1/hello/' 
------解决方案--------------------
 awk \x27{printf \"%s \",$1}\x27")
        system("echo 4 5 6 
------解决方案--------------------
 grep 4 
------解决方案--------------------
 sed 's/4/world/' 
------解决方案--------------------
 awk \x27{printf \"%s \",$1}\x27")
        print ""
    }
}'

需要在内层awk里面使用printf控制输出格式