Bash 为什么这个awk代码段打印出双空格
我不太清楚为什么会这样Bash 为什么这个awk代码段打印出双空格,bash,unix,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是一个变量,它保存字符串的长度直到分号,$LONGESTLENGHT是一个变量,它保存字符串的总大小。 $Line应
echo -n "$Line" | awk -v len1=$length -v len2=$longestLength -F\;
'{printf "%-"len1"s" "%-"len2"s\n",$1,";"$2}'
打印双倍行距的结果
我问我的老师,他只说加上echo-n,把echo和awk放在同一行。我两个都做了,但都不起作用
$length是一个变量,它保存字符串的长度直到分号,$LONGESTLENGHT是一个变量,它保存字符串的总大小。
$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)
where 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)
我明白了
多谢各位
编辑:
为了
回声“$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
基本上我所有的字符串都以a结尾\n嗨,我添加了一个编辑来解释它。谢谢。@Sheller:呃,那不是文本,他说他在
$Line
的末尾有一个LF字符。如果在命令行中执行line=“Hello world!”
(其中
不是文本,而是按键),您可以自己测试它。但是-Pikachu,如果使用了-n
选项,我也不会得到双空格。请运行echo“$Line”| od-tx1-tc
并发布其输出。这是一个愚蠢的问题:您在上面两行中发布的代码实际上在一行中,不是吗?对不起。我是说“你的awk代码”
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