我正在开发一个 shell 脚本的增强功能,它可以读取文件并处理它。基本上,输入文件包含一个标题记录,后面跟着一些详细记录。我只想从文件中获取头记录。
$ cat sample_file.txt
header1,header2,header3,header4
value1,value2,value3,value4
Run Code Online (Sandbox Code Playgroud)
现有脚本使用以下命令从文件中获取标头:
$ cat sample_file.txt | head -1 | egrep -o '[[:print:]]' | tr '\n' '\0'
header1,header2,header3,header4$
Run Code Online (Sandbox Code Playgroud)
我不知道egrep -o '[[:print:]]'
在这里做什么。因为即使没有这个egrep
命令也可以这样写
按原样打印标题
$ cat sample_file.txt | head -1
header1,header2,header3,header4
Run Code Online (Sandbox Code Playgroud)
或者打印标题而不在末尾换行
$ cat sample_file.txt | head -1 | tr '\n' '\0'
header1,header2,header3,header4$
Run Code Online (Sandbox Code Playgroud)
的手册页egrep
讲述了以下内容,但不清楚何时[[:print:]]
应该使用。
最后,在括号表达式中预定义了某些命名的字符类,如下所示。它们的名称是不言自明的,它们是 [:alnum:]、[:alpha:]、[:cntrl:]、[:digit:]、[:graph:]、[:lower:]、[:print:] 、[:punct:]、[:space:]、[:upper:] 和 [:xdigit:]。例如,[[:alnum:]] 表示 [0-9A-Za-z],但后一种形式取决于 C 语言环境和 ASCII 字符编码,而前者独立于语言环境和字符集。(请注意,这些类名称中的方括号是符号名称的一部分,除了界定方括号列表的方括号之外还必须包含方括号。)大多数元字符在列表中会失去其特殊含义。要包含文字 ],请将其放在列表的第一位。类似地,要包含文字 ^,请将其放置在除开头之外的任何位置。最后,要包含文字 - 将其放在最后。
您能帮我理解egrep '[[:print:]]'
选项的用法以及我们在哪里使用它吗?