【发布时间】:2019-01-18 16:42:54
【问题描述】:
要求:我只需要使用grep/cut/join。
我有如下数据:
3 abcd
23 xyz
1234 abc
我想将此数据通过管道传输到cut,然后提取列。但是,当我使用cut -d' ' -f 1,2 时,它会将每个空间视为自己的列分隔符。我希望在cut 之前修剪前两行。有办法吗?
示例(我使用tr 来演示此处的空格位置;解决方案中不允许这样做):
$ echo ' 3 abcd
23 xyz
1234 abc' | cut -d' ' -f 1,2 | tr ' ' '_'
_
_23
1234_abc
预期输出:
$3 abcd
23 xyz
1234 abc
【问题讨论】:
-
将您尝试的内容显示为minimal reproducible example,以及结果输出。例如,您应该显示在此上下文中使用的
-d选项。 -
@jdv 我已编辑。请看一看。
-
有一个答案显示了一种可能的方法来按摩输入以删除带有“sed”的前导分隔符。如果您需要保留那些领先的分隔符,那么您将面临额外的挑战。这里还有其他提示:stackoverflow.com/q/4143252/1531971(虽然这里谈到了将多个分隔符压缩到一个分隔符,但同样的工具可以通过一些工作来按摩前导分隔符。)
-
最后,我希望只有 3 abcd, 23 xyz,1234 abc
-
在将 args 传递到 cut 之前去除前导空格。 unix.stackexchange.com/q/102008/156990
标签: cut