例如,cut命令可以使用参数-f,根据man
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified
在这种情况下,什么是领域?
解决方法:
术语“字段”通常与诸如剪切和awk之类的工具相关联.如果您获取数据并使用特定字符将其分开,则字段将类似于列数据.通常,用于执行此操作的字符是Space.
但是,与大多数工具一样,它是可配置的.例如:
> awk = awk -F“,”…… – 用逗号分隔(即).
> cut = cut -d“,”…… – 用逗号分隔(即).
例子
第一个显示awk如何自动分割空格.
$echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.
这个展示了切割如何在空间上分割.
$echo "The rain in Spain." | cut -d" " -f1,4
The Spain.
这里我们有一个列表数据列表,我们正在使用它来切换列1和1. 4.
$echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4
Awk也可以做到这一点:
$echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4
Awk在处理各种分离角色方面也更擅长.这里它处理Tabs和Spaces,它们同时混合在一起:
$echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.
怎么样-s切换?
关于这个开关,它只是告诉cut不打印任何不包含通过-d开关指定的分隔符字符的行.
例
说我们有这个文件.
$cat sample.txt
This is a space string.
This is a space and tab string.
Thisstringcontainsneither.
注意:上面的第二个字符串中有空格和制表符.
现在,当我们使用带有和不带-s开关的cut处理这些字符串时:
$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
在第二个示例中,您可以看到-s开关已从输出中省略了任何不包含分隔符Space的字符串.
标签:cut,linux
来源: https://codeday.me/bug/20190808/1625946.html