想要从 unix 中的分隔文件(分隔符“||”)中提取 2 列,如果将完整的行放在一行中,如下所示,可以轻松完成
foo||bar||baz||quux
由
cut -d'||' -f1 file_name
但就我而言,文件中单行记录的记录转到下一行,例如:
foo||bar||baz||quux||foo||bar||baz||quux||foo||bar||baz||quux
||quux||bar||baz||quux||foo||bar||baz||quux||foo||bar||baz||quux
上面命令的输出是
foo
quux
应该只是“foo”,因为它位于第一列。
文件包含在第 1 行
foo||bar||baz||quux||foo||bar||baz||quux||foo||bar||baz||quux
||quux||bar||baz||quux||foo||bar||baz||quux||foo||bar||baz||quux
文件包含在第 2 行
foo2||bar2||baz2||quux2||foo2||bar2||baz2||quux2||foo2||bar2||baz2||quux2
||quux2||bar2||baz2||quux2||foo2||bar2||baz2||quux2||foo2||bar2||baz2||quux2
输出应该是
foo
foo2
几乎,但是-d
开关只需要一个字符:
cut -d'|' -f1 file_name
输出:
foo
foo2
<小时/>
注意:由于分隔符加倍,如果字段编号大于 1,-f
开关将无法按预期工作。处理该问题的一种方法是将字段调整为等于“2n-1”。因此,要获取字段 #3,请执行 -f$(( (3*2) - 1 ))
。
我是一名优秀的程序员,十分优秀!