和
awk '{ printf "%-15s %s\n", $1, $2 }' renamed | sort -V
... 我从文件中获得了良好的输出renamed
。
它看起来像:
file1 file1.new
但我想将输出改为:
file1 --> file1.new
我想-->
在每行的第 15 个位置添加。
怎么办呢?
和
awk '{ printf "%-15s %s\n", $1, $2 }' renamed | sort -V
... 我从文件中获得了良好的输出renamed
。
它看起来像:
file1 file1.new
但我想将输出改为:
file1 --> file1.new
我想-->
在每行的第 15 个位置添加。
怎么办呢?
printf
格式字符串指定%-15s %s\n
您想要输出两个由空格分隔并以换行符终止的字符串。第一个字符串的宽度应为 15 个字符,减号表示它应该在 15 个字符内左对齐(字符串右侧的其余字符将用空格填充)。
要在第二个字符串前面插入
-->
,在单个空格后,只需将格式修改为%-15s --> %s\n
。例如:
请注意,
-->
实际上是在位置 17 而不是 15 处添加的。位置 15 为第一个字符串保留,而位置 16 将在格式字符串中包含该空格字符。要将 添加-->
到位置 15,您需要将第一个字符串的空格减少到 13%-13s --> %s\n
:。考虑使用
column
来确定适当的第一个字段宽度,而不是硬编码15
,以便它可以在必要时处理长度超过 15 个字符的字段,例如使用任何版本的column
:如果您有 GNU
column
,那么它有一个-o
选项可以指定输出字段分隔符,这样您就不需要管道了sed
:如果您的字段通过添加制表符分隔,它还可以处理字段内的空格
-s$'\t'
,或者我们可以做各种其他事情来处理各种不同的输入,如果您需要更多帮助,请提出一个包含有关输入格式的更多详细信息的新问题。