gpt4 book ai didi

linux - 如何使用 awk 打印选定的连续列和随机列

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:00 25 4
gpt4 key购买 nike

我想打印 ifile.txt 中的第 1 到第 10 列、第 23 列和第 27 列。我可以使用

打印第 1 到第 10 列
awk '{n=10; for (i=1;i<=n;i++) printf "%f ", $i; print "";}' ifile.txt

但是我无法向其中添加第 23 和第 27 列。

我尝试了以下建议,仍然存在一些问题。例如,我的 ifile.txt 是:

ifile.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

虽然我使用以下内容

#!/bin/bash
awk '{
n=10
for (i=1; i<=n; i++)
a[$i]
a[$23]
a[$27]
for (k in a)
printf "%5.1f", k, FS
print ""
}' ifile.txt

它给了

4.0 27.0  5.0  6.0  7.0  8.0  9.0 10.0 23.0  1.0  2.0  3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0
4.0 27.0 5.0 6.0 7.0 8.0 9.0 10.0 23.0 1.0 2.0 3.0

当我使用

cut -d ' ' -f1-10,23,27 ifile.txt

它给了

1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26
1 2 3 4 5 6 7 8 9 22 26

我可以理解并通过修改解决

cut -d ' ' -f2-11,24,28 ifile.txt

这里的问题是每个开始前都有一个空格。但我想知道一个通​​用的方法来做到这一点,这样它就不会看到开始的空间。

最佳答案

$del=' '
cut -d "$del" -f1-10,23,27 file

关于linux - 如何使用 awk 打印选定的连续列和随机列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31824731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com