slm*_*slm 19
术语“字段”通常与诸如cut
和 之类的工具相关联awk
。如果您获取数据并使用特定字符将其分隔,则字段将类似于一列数据。通常用于执行此操作的字符是Space.
但是,与大多数工具一样,它是可配置的。例如:
awk -F"," ...
- 将用逗号分隔(即,)。cut -d"," ...
- 将用逗号分隔(即,)。第一个显示了如何awk
在空间上自动分割。
$ echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.
Run Code Online (Sandbox Code Playgroud)
这也显示了如何cut
在空间上拆分。
$ echo "The rain in Spain." | cut -d" " -f1,4
The Spain.
Run Code Online (Sandbox Code Playgroud)
这里我们有一个列数据的 CSV 列表,我们用它cut
来返回第 1 列和第 4 列。
$ echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4
Run Code Online (Sandbox Code Playgroud)
awk 也可以这样做:
$ echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4
Run Code Online (Sandbox Code Playgroud)
awk 也更擅长处理各种分离字符。在这里它在处理Tabs与一起Spaces,他们是在同一时间,混合间:
$ echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.
Run Code Online (Sandbox Code Playgroud)
关于这个开关,它只是告诉cut
不要打印任何不包含通过-d
开关指定的分隔符的行。
假设我们有这个文件。
$ cat sample.txt
This is a space string.
This is a space and tab string.
Thisstringcontainsneither.
Run Code Online (Sandbox Code Playgroud)
注意:上面的第二个字符串中有空格和制表符。
现在,当我们使用cut
和不使用-s
switch处理这些字符串时:
$ cut -d" " -f1-6 sample.txt
This is a space string.
This is a space
Thisstringcontainsneither.
$ cut -d" " -f1-6 -s sample.txt
This is a space string.
This is a space
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,您可以看到-s
开关从输出中省略了任何不包含分隔符的字符串,Space.
根据 POSIX 的字段是由 中的任何字符分隔的行的任何部分IFS
,“输入字段分隔符(或内部字段分隔符)。 ”的默认值是空格,后跟水平制表符,后跟换行符. 使用 Bash,您可以运行printf '%q\n' "$IFS"
以查看其价值。
归档时间: |
|
查看次数: |
23498 次 |
最近记录: |