如何从CSV列中获取第一个和最后一个元素

use*_*149 2 unix csv bash shell parsing

我有以下格式的csv文件:

Time, Field1, Field2,
1000, 1,      2,
1001, 3,      4,
1002, 5,      6,
Run Code Online (Sandbox Code Playgroud)

我想从时间列中获取第一个和最后一个元素,并将它们存储在我的bash脚本中的变量中。

因此,基于此示例,我需要:

$start=1000
$end=1002
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Alv*_*ndo 5

您有很多选择。这里是其中的一些:

使用headtailcut

$start=$(head -n2 file.csv | tail -n1 | cut -d',' -f1)
$end=$(tail -n1 file.csv | cut -d',' -f1)
Run Code Online (Sandbox Code Playgroud)

使用 awk

$start=$(awk -F',' 'NR==2{print $1}' file.csv)
$end=$(awk -F',' 'END{print $1}' file.csv)
Run Code Online (Sandbox Code Playgroud)

单线使用awk(由于此答案

read start finish <<< $(awk -F',' 'NR==2{print $1}END{print $1}' file.csv)
Run Code Online (Sandbox Code Playgroud)

另一个单线使用 awk

read -d'\n' start finish < <(awk -F',' 'NR==2{print $1}END{print $1}' file.csv)
Run Code Online (Sandbox Code Playgroud)