为什么这个awk代码段打印出双倍空间

时间:2014-12-01 06:27:04

标签: bash unix

我不确定为什么这个

 echo -n "$Line" | awk -v len1=$length -v len2=$longestLength -F\; 
'{printf "%-"len1"s" "%-"len2"s\n",$1,";"$2}'

打印出双倍间距的结果。

我问我的老师,他说的只是添加echo -n并将echo和awk放在同一行。我做了两件事,但都没有奏效。

$ length是一个变量,它将字符串的长度保持为分号,$ longestLength是一个保存字符串总大小的变量。 $ Line应该是一个简单的字符串,通常会包含某种值,例如

str: db 'Hello world!', 0Ah    ; message string with new-line char

它会打印出格式化的字符串,但也会打印出一个完全空行,例如:

str: db 'Hello world!', 0Ah    ; message string with new-line char
(empty line goes here)

其中is只能显示格式化的字符串。

基本上不是

str: db 'Hello world!', 0Ah    ; message string with new-line char
                               ; at the end (10 decimal)
str_len: equ $ - str           ; calcs length of string (bytes) by
                               ; subtracting this address ($ symbol)

我得到了

str: db 'Hello world!', 0Ah    ; message string with new-line char

                               ; at the end (10 decimal)

str_len: equ $ - str           ; calcs length of string (bytes) by

                               ; subtracting this address ($ symbol)

谢谢

编辑:

有     echo“$ Line”| od -tx1 -tc

我的输出类似于:

0000040  6c  20  74  6f  20  70  65  72  66  6f  72  6d  20  73  79  73
          l       t   o       p   e   r   f   o   r   m       s   y   s
0000060  74  65  6d  20  63  61  6c  6c  0a
          t   e   m       c   a   l   l  \n
0000071
int 80h                             ; interrupt kernel to perform system call                     

基本上我的所有字符串都以\ n

结尾

0 个答案:

没有答案