我有一个要求,我需要从最后一个字段的文件中提取几个字段。文件的结构可能不同,因此无法对最后一个字段进行硬编码。让我们以两个不同的文件为例
文件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
低等级软件工具方法,使用bash
、paste
、cut
和rev
:
paste -d, <(cut -d, -f1 File1) <(rev File1 | cut -d, -f1 | rev)
输出:
a,c
d,f
注意:rev
由于无法cut
提取未指定的内容,因此需要最后的柱子。但cut
总能提取出来第一的列,所以rev
提供了。