假设我有如下几行输出:
First name, Last name, 123456789(9 digits)
GPA
Class
Major
University
我怎样才能编写一些代码来打印前 3 行并仅保留第一行的 ID 号?
我尝试使用head
、grep
和cut
,但无法做到。
答案1
您可以使用 awk 来打印最后一个以逗号分隔的字段:
$ cat file
First name, Last name, 123456789
GPA
Class
Major
University
$ awk -F', ' 'NR<4 {print $NF}' file
123456789
GPA
Class
或者使用 sed 将最长的字符串替换为逗号空格:
$ sed -n '1,3{s/.*, //; p}' file
123456789
GPA
Class
答案2
一个简单的 if-else 语句也适用于awk
。在下面,我们使用逗号空格作为字段分隔符 ( ) ,如果我们在第一行 ( ),-F', '
则打印第三个字段( ) ,否则打印前 3 行 ( ) 的整行 ( ):$3
NR == 1
$0
NR < 4
awk -F', ' '{if (NR == 1) print $3; else if (NR < 4) print $0}' file
答案3
如果您的文件有许多这样的条目而不是只有一个,请尝试:
cat file |tr "," "\n" |grep "[0-9]\{9\}" -A3