Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用awk对所有列使用相同的格式打印$0_Linux_String_Bash_Text_Awk - Fatal编程技术网

Linux 使用awk对所有列使用相同的格式打印$0

Linux 使用awk对所有列使用相同的格式打印$0,linux,string,bash,text,awk,Linux,String,Bash,Text,Awk,举个例子,我有一个只有一行的文件 0.1 35 23.0e3 4.0D+03 我想把它转换成一个格式很好的文件,比如 1.00e-01 3.50e+01 2.30e+04 4.00e+03 我知道我们可以在awk中使用printf语句来实现这一点,但是如果列的数量很大,这将是一件乏味的事情。我想知道是否有一种方法可以设置所有列的格式,只需使用print$0?就可以考虑以下输入: $ a=$'0.1 35 23e3\n0.2 36 24e3';echo "$a" 0.1 35 23e3 0.2

举个例子,我有一个只有一行的文件

0.1 35 23.0e3 4.0D+03
我想把它转换成一个格式很好的文件,比如

1.00e-01 3.50e+01 2.30e+04 4.00e+03

我知道我们可以在
awk
中使用
printf
语句来实现这一点,但是如果列的数量很大,这将是一件乏味的事情。我想知道是否有一种方法可以设置所有列的格式,只需使用
print$0

就可以考虑以下输入:

$ a=$'0.1 35 23e3\n0.2 36 24e3';echo "$a"
0.1 35 23e3
0.2 36 24e3
此gnu awk将实现您所期望的,而无需在字段上循环:

$ echo "$a" |awk '{printf "%.2e%s",$0,RT}' RS="[ ]|\n"
1.00e-01 3.50e+01 2.30e+04
2.00e-01 3.60e+01 2.40e+04

我故意排除
4.0D+03
,因为它似乎无效。

考虑到此输入:

$ a=$'0.1 35 23e3\n0.2 36 24e3';echo "$a"
0.1 35 23e3
0.2 36 24e3
此gnu awk将实现您所期望的,而无需在字段上循环:

$ echo "$a" |awk '{printf "%.2e%s",$0,RT}' RS="[ ]|\n"
1.00e-01 3.50e+01 2.30e+04
2.00e-01 3.60e+01 2.40e+04

我故意排除了
4.0D+03
,因为它似乎无效。

为什么不直接循环到
NF
?第四列值真的有效吗<代码>4.0D+03?这是哪种符号?向我们展示您分别为每个字段设置格式的代码,我们可以帮助您自动为循环中的所有字段使用该格式。Stack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的问题。为什么不直接循环直到
NF
?第四列值真的有效吗<代码>4.0D+03?这是哪种符号?向我们展示您分别为每个字段设置格式的代码,我们可以帮助您自动为循环中的所有字段使用该格式。Stack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。