【发布时间】:2014-04-17 06:54:01
【问题描述】:
我的脚本中有一个字符串变量,由 ls -l 的 9 个权限字符组成
例如:
rwxr-xr--
我想对其进行操作,使其显示如下:
r w x r - x r - -
IE 每三个字符用制表符分隔,所有其他字符用空格分隔。我最接近的是使用 printf
printf "%c %c %c\t%c %c %c\t%c %c %c\t/\n" "$output"{1..9}
这只会打印第一个字符但格式正确
我确信有一种方法可以使用我想不到的“sed”
有什么建议吗?
【问题讨论】:
-
有什么建议吗? Don't parse
lsoutput.stat(1) 的输出更容易以编程方式处理。 -
echo "$output"{1..9}会告诉你你的命令哪里出错了。 . . -
@tripleee:非常感谢您的建议!然而,这是一个任务,我们被告知要忽略你描述的奇怪情况。但是,您是绝对正确的,总的来说,我应该记住这一点。不幸的是,我在使用 ls -l 重写方面做得太过分了......我的问题仅仅是关于以我要求的方式简单地格式化一个 9 个字符的字符串
-
@ruakh:我知道它为什么不起作用......因为每次它都会重新处理变量。因此,为什么我说这是我最接近的,但我可能需要使用“sed”命令。
-
提示:使用正则表达式匹配来填充
BASH_REMATCH,每个数组元素一个字符。
标签: string bash sed scripting formatting