我有两个文档是 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
,cut
或sed
。前者是优选的。
如果你的文件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
...而是对每行的第二个非空格组执行相同的操作 - 这只会留下名称。