Unix 获取最后一个字段

Unix 获取最后一个字段

我有一个要求,我需要从最后一个字段的文件中提取几个字段。文件的结构可能不同,因此无法对最后一个字段进行硬编码。让我们以两个不同的文件为例

文件1

a,b,c
d,e,f

另一个文件 File2

a,a,a,a
b,b,b,b

要求可以像从文件 1 中提取第一个和最后一个字段,或者要求可以像从文件 2 中提取第二个和最后一个字段

我们从配置表中获得此要求,其中他们提到要提取哪个字段,但最后一个字段是常见的。一种方法是使用 while 循环,但是如果没有 while 循环,我们有什么方法可以实现这一点吗?

答案1

使用awk:

awk -F, '{print $1,$NF}' file

答案2

这两个例子应该能让你走上正轨:

echo {a..z} | awk '{print $1" "$NF}'

a=1; b=5; echo {a..z} | awk -v a=$a -v b=$b '{print $a" "$b}'

在你的情况下,用法如下:

awk <options> myFile
  • awk$n变量是输入行的第 n 个字段。
  • NF是字段数,那么$NF是该行的最后一个字段
  • 您还可以使用 指定输入字段分隔符-F<character>。在这里,它将是:-F,

答案3

低等级软件工具方法,使用bashpastecutrev

paste -d, <(cut -d, -f1 File1) <(rev File1 | cut -d, -f1 | rev)

输出:

a,c
d,f

注意:rev由于无法cut提取未指定的内容,因此需要最后的柱子。但cut总能提取出来第一的列,所以rev提供了。

相关内容