Chinaunix
标题:
printf格式化输出
[打印本页]
作者:
xjxh829
时间:
2014-12-10 20:28
标题:
printf格式化输出
脚本如下。用printf来控制输出格式。如果当前行和上一行的长度不一致的时候,就会输出扭转,不整齐。如何控制呢?谢谢。
$ cat print.sh
#!/bin/bash
AAA="hello"
BBB="asdasf"
CCC="asdfasfsdf"
printf "%20s%20s%20s\n" "$AAA" "$BBB" "$CCC"
printf "%20s%20s%20s\n" "$BBB" "$AAA" "$CCC"
printf "%20s%20s%20s\n" "$AAA" "$CCC" "$BBB"
$ sh ./print.sh
hello asdasf asdfasfsdf
asdasf hello asdfasfsdf
hello asdfasfsdf asdasf
作者:
Buring__
时间:
2014-12-10 20:45
回复
1#
xjxh829
要这样输出 左对齐 ??
cat a.sh
#!/bin/bash
AAA="hello"
BBB="asdasf"
CCC="asdfasfsdf"
printf "%-20s%-20s%-20s\n" "$AAA" "$BBB" "$CCC"
printf "%-20s%-20s%-20s\n" "$BBB" "$AAA" "$CCC"
printf "%-20s%-20s%-20s\n" "$AAA" "$CCC" "$BBB"
# bash a.sh
hello asdasf asdfasfsdf
asdasf hello asdfasfsdf
hello asdfasfsdf asdasf
复制代码
作者:
xjxh829
时间:
2014-12-10 21:19
回复
2#
Buring__
我贴错了。如果内容含有中文就不行。
#!/bin/bash
AAA="hello"
BBB="中文的"
CCC="asdfasfsdf"
printf "%-20s%-20s%-20s\n" "$AAA" "$BBB" "$CCC"
printf "%-20s%-20s%-20s\n" "$BBB" "$AAA" "$CCC"
printf "%-20s%-20s%-20s\n" "$AAA" "$CCC" "$BBB"
输出结果为
hello 中文的 asdfasfsdf
中文的 hello asdfasfsdf
hello asdfasfsdf 中文的
作者:
Buring__
时间:
2014-12-10 21:33
因为中英文的长度不一样啊
expr length '中文'
6
expr length '123'
3
复制代码
作者:
blackold
时间:
2014-12-10 21:39
回复
3#
xjxh829
这和 locale 有关吧。
作者:
xjxh829
时间:
2014-12-11 10:08
回复
4#
Buring__
那如何控制格式化输出。?
作者:
Looiml
时间:
2014-12-11 14:29
回复
6#
xjxh829
因为每个汉字在FORMAT字串中会消耗掉3个字符宽度,而在视觉上只会占用2个字符宽度。
作者:
Buring__
时间:
2014-12-11 16:52
回复
6#
xjxh829
用\t 吧
作者:
xjxh829
时间:
2014-12-11 19:17
回复
8#
Buring__
用\t 不能喝-20s 共用吧。
作者:
Buring__
时间:
2014-12-11 22:21
可以啊
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2