linux sed 不输出,linux-使用awk和sed消除不必要的输出

从以下命令中,我如何消除之前出现的所有行

Owner RepoName CreatedDate

编辑命令:

find /opt/site/ -name '.log.txt' | xargs cat | awk '{$NF=""; print $0}' | sed '1i Owner RepoName CreatedDate' | column -t

输出是

find: Filesystem loop detected; `/nfs/.snapshot/nightly.4' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy.

find: Filesystem loop detected; `/nfs/.snapshot/nightly.5' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy.

find: Filesystem loop detected; `/nfs/.snapshot/nightly.6' has the same device number and inode as a directory which is 2 levels higher in the filesystem hierarchy.

Owner RepoName CreatedDate

val abc Fri Mar 16 17:01:07 PDT

p1 repo_pc Wed Mar 21 11:34:42 PDT

New fm Mon Mar 19 00:15:51 PD

所需的输出仅为:

Owner RepoName CreatedDate

val abc Fri Mar 16 17:01:07 PDT

p1 repo_pc Wed Mar 21 11:34:42 PDT

New fm Mon Mar 19 00:15:51 PD

解决方法:

这些查找错误将位于stderr上,因此完全绕开您的链,您将要使用2> / dev / null重定向错误,尽管这样做可以防止您在find命令中看到任何其他错误.

find /opt/site/ -name '.log.txt' 2>/dev/null | xargs cat | awk '{$NF=""; print $0}' | xargs sed "/Filesystem/d" | sed '1i Owner RepoName CreatedDate' | column -t

通常,使用像这样的复杂命令,应该在遇到错误时将其分解,以便找出问题出在哪里.

让我们分解一下该命令,看看它在做什么:

查找/ opt / site / -name’.log.txt’2> / dev / null-查找/ opt / site /下名为.log.txt的所有文件

xargs cat-一个接一个地获取所有内容

awk'{$NF =“”;打印$0}’-删除最后一列

xargs sed“ / Filesystem / d”-将每个条目视为文件,并从这些文件的内容中删除包含Filesystem的所有行.

sed’1i Owner RepoName CreatedDate’-在第一行插入所有者RepoName CreatedDate

column -t-将给定数据转换为表

我建议建立命令,并在每个阶段检查输出是否正确.

您的命令有几件令人惊讶的事情:

>查找文件查找的文件完全是.log.txt,而不是扩展名.

>第二个xargs调用-将.log.txt文件的内容转换为文件名.

标签:linux,awk,sed,command

来源: https://codeday.me/bug/20191013/1910811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值