gpt4 book ai didi

linux - Linux 中文件的剪切列

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:25 24 4
gpt4 key购买 nike

我要在Linux中剪切数据文件,但我不熟悉Linux的代码,这是我的问题:

我有一个格式如下的文件:

704  11785
9037 1 0 0 000200011101010001202022020002002020001000000
6657 1 0 0 000202011101010002000100001001002220001000000
1831 1 0 0 000002222222020002000122000010200002202022222

我想保留前 4 列和第 5 列,仅包含前 10 个数字,如下所示:

704  11785
9037 1 0 0 0002000111
6657 1 0 0 0002020111
1831 1 0 0 0000022222

列之间用空格分隔,我应该使用哪个命令来剪切我的数据文件?谢谢。

最佳答案

@m.antkowicz 几乎给了你答案:

awk '{printf "%s %s %s %s \n",$1,$2,$3,substr($4,0,10}' filename 

这是我认为最好的方法。使用 printf,您可以设置变量并设置输出格式(如\n)。

根据评论,进行了编辑:

awk '{printf "%s %s %s %.10s \n",$1,$2,$3,$4}' filename 

会将变量 $4(即第 4 列)打印到包含 10 个字符 (%.10s) 的字符串的占位符。awk 中的 printf 方法与其他编程语言中的 printf 相同。您可以使用不同的占位符指定输出类型。有:

  • %d 小数
  • %x 十六进制
  • %o 八进制
  • %f float
  • %s 字符串
  • %c 个字符

因此 printf 可以将变量转换为特定的占位符,例如

awk '{x=30;printf "%o",x}'

将为您提供八进制值 36。因此您还可以进行简单的微积分,例如

awk '{printf "%d\n",$1+$2}' 

用于添加第一列和第二列并将其打印为十进制值。

但是也可能存在诸如

之类的错误
awk '{x="a";printf "%d",x}'

这不起作用,因为您有一个 charvar x 并且想要打印小数。

关于linux - Linux 中文件的剪切列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35538506/

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