如何在匹配模式之前或在bash中使用sed命令逐行追加空格数?
file.txt的
str_len: equ $ - str ; calcs length of string (bytes) by
; subtracting this address ($ symbol)
output.txt的
str_len: equ $ - str ; calcs length of string (bytes) by
; subtracting this address ($ symbol)
答案 0 :(得分:2)
只有一种来自unix-magic-set-of-wondrous-things的工具可以完全满足您的需求:
$ column -t -s ';' -o ';' <input>
str_len: equ $ - str ; calcs length of string (bytes) by
; subtracting this address ($ symbol)
除此之外,sed是Turing完成的,图灵的机器也是如此。但这并不意味着有时间在这样的体系结构上实现非平凡的解决方案:D
编辑:上面的命令是使用column from util-linux 2.25.2
运行的,带有标志:
-o, --output-separator string Specify the columns delimiter for table output (default is two spaces). -s, --separator separators Specify the possible input item delimiters (default is whitespace). -t, --table Determine the number of columns the input contains and create a table. Columns are delimited with whitespace, by default, or with the characters supplied using the --output-separator option. Table output is useful for pretty-printing.
答案 1 :(得分:1)
以下是使用awk的一种方法:
$ awk -F' *;' -vOFS=\; '{print $1 substr(" ",1,24-length($1)),$2}' file.txt
str_len: equ $ - str ; calcs length of string (bytes) by
; subtracting this address ($ symbol)
将输入字段分隔符设置为任意数量的空格,后跟分号。将输出字段分隔符设置为分号。打印第一列,然后打印到填充到24个字符所需的空格,然后是第二列。