标签: awk-formatting

使用printf格式的变量

假设我有一个这样的文件:

$ cat a
hello this is a sentence
and this is another one
Run Code Online (Sandbox Code Playgroud)

我想打印前两列,在它们之间有一些填充.由于这个填充可能会改变,我可以使用例如7:

$ awk '{printf "%7-s%s\n", $1, $2}' a
hello  this
and    this
Run Code Online (Sandbox Code Playgroud)

或者17:

$ awk '{printf "%17-s%s\n", $1, $2}' a
hello            this
and              this
Run Code Online (Sandbox Code Playgroud)

或者25,或......你明白了这一点:数字可能会有所不同.

然后弹出一个问题:是否可以为此分配变量N,而不是以%N-s格式对整数进行硬编码?

我尝试了这些事情没有成功:

$ awk '{n=7; printf "%{n}-s%s\n", $1, $2}' a
%{n}-shello
%{n}-sand

$ awk '{n=7; printf "%n-s%s\n", $1, $2}' a
%n-shello
%n-sand
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想知道是否可以这样做.如果不是,那么最好的解决方法是什么?

awk printf awk-formatting

9
推荐指数
2
解决办法
5783
查看次数

用于从列中查找最小值的awk脚本

我是初学者AWK,所以请帮助我学习它.我有一个名称的文本文件,snd它的值是

1 0 141
1 2 223
1 3 250
1 4 280
Run Code Online (Sandbox Code Playgroud)

我想在第三列值为最小值时打印整行

awk awk-formatting

4
推荐指数
2
解决办法
2万
查看次数

使用awk以编号格式将单行拆分为多行

我正在尝试使用awk命令将值拆分为三个部分.需要帮助打破3.

内容= 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %

我希望上面的内容在编号系统中分成3行.

需要样品输出:

1. 11683 (<server01>: du.size[/,free] : 0.5 % 
2. 21683 (<server02>: du.size[/,free] : 1.5 % 
3. 31683 (<server03>: du.size[/,free] : 3.5 %
Run Code Online (Sandbox Code Playgroud)

我尝试过以下命令:

echo $content | awk -F"3. " '{ print $2 }' 
Run Code Online (Sandbox Code Playgroud)

我明白了

31683 (<server03>: du.size[/,free] : 3.5 %
Run Code Online (Sandbox Code Playgroud)

与其他人类似,但仍未能以正确的编号格式获得样本输出,如上所示.

谁可以帮我这个事 ?

linux shell scripting awk awk-formatting

4
推荐指数
1
解决办法
9243
查看次数

标签 统计

awk ×3

awk-formatting ×3

linux ×1

printf ×1

scripting ×1

shell ×1