如何在bash中修改历史输出中的行号和历史条目之间的文本字符串格式?
如果在bash打印中运行history,例如:
5 history例如,如何将其更改为以下内容:
5....history或
5_anyString_history此外,通过调整空格的数量,history已经完成了对齐。如何也包含此功能?也就是说,如果。作为字符串,如何根据行号中的位数改变点数?另外,我想删除前导空格。
发布于 2012-05-11 19:25:00
history | sed 's/^\( *[0-9]*\) */\1../'当我执行history时,行号后面总是有两个空格。通过改变数字前的空格数来完成对齐。
这是一个如何替换前导空格(空格的数量不同)的示例:
history | sed 's/^ */&\n/; :a; s/ \(.*\n\)/.\1/; ta; s/\n//'编辑:
这个版本的工作原理类似于上面的第二个版本,但它移动了数字后面的点,因此没有前导空格,并且可变数量的点导致历史记录条目左对齐。
sed 's/^ */&\n/; :a; s/ \(.*\n\)/.\1/; ta; s/\n//;s/\(\.*\)\([^ ]*\) */\2\1/'
1....aaa bbb ccc
22...ddd eee fff
333..ghi jkl mno它是这样工作的:
在初始的空格序列之后添加一个换行符(divide和conquer)
:a - branching
ta分支标记数字。如果进行了替换,则在替换所有前导空格后,继续通过分支instruction
:a (数字),并排除数字发布于 2012-05-11 16:58:56
type history
history is a shell builtin告诉我们,历史是内置的,所以您需要获取bash的源代码,并对其进行修改。
https://stackoverflow.com/questions/10546796
复制相似问题