一种反转的猫

一种反转的猫

我有两个文档是 SQL 查询的结果。

例如我有我的文档1.lst那是 :

    John1    0
    Julien  10
    Jules3   0
    Julie   30

在此 Doc1.lst 上,我使用 sed 仅包含名称部分,因此文档2.lst是 :

    John1
    Julien
    Jules3
    Julie

我掌握的还不够sed命令只捕获数字,所以我想知道是否有一种方法可以创建一个 Doc3.lst 来获取 Doc1.lst 并将 Doc2.lst 的内容删除到其中

这将是一种逆转链状。顺便说一句,如果你有sed命令只捕获非常好的数字。

答案1

要获得所需的输出,您可以使用awk,cutsed。前者是优选的。

如果你的文件Doc1.lst如下

John1    0
Julien  10
Jules3   0
Julie   30

以下awk命令将获得您想要的输出。假设字段分隔符是空格。

awk '{print $1}' Doc1.lst

使用cut

cut -d' ' -f1 Doc1.lst

或者使用sed.笔记。sed是一个流编辑器,您不想用于sed此任务。但无论如何,这就是您想要的行。

sed 's/\([a-zA-Z]*\).*/\1/' Doc1.lst

答案2

awk '{print $1}' Doc1.lst > Doc3.lst

答案3

tr -s '[:space:]' \\n <infile | grep '^[0-9]'

...或者...

sed '/^[0-9]/P;y| |\n|;D' <infile

...或者可能只是...

sed 's/.* //' <infile

...不过对于最后一个,您可能想s/ *$//先执行,以防出现尾随空格。

更一般地,您可以使用以下方式对组进行编号sed...

sed 's/ *[^ ]\{1,\} *//' <infile

...这样写会从一行中删除第一组非空格字符和所有周围的空格 - 这会让你留下数字。然而...

sed 's/ *[^ ]\{1,\} *//2' <infile

...而是对每行的第二个非空格组执行相同的操作 - 这只会留下名称。

相关内容