從以下命令中,我如何消除之前出現的所有行
Owner RepoName CreatedDate
編輯命令:
find /opt/site/ -name '.log.txt' | xargs cat | awk '{$NF=""; print $0}' | sed '1i Owner RepoName CreatedDate' | column -t
輸出是
shell sed命令。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
linux sed 正則表達式?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
sed grep?解決方法:
這些查找錯誤將位于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的所有文件
shell腳本中讀取輸入使用什么命令?xargs cat-一個接一個地獲取所有內容
awk'{$NF =“”;打印$0}’-刪除最后一列
xargs sed“ / Filesystem / d”-將每個條目視為文件,并從這些文件的內容中刪除包含Filesystem的所有行.
sed’1i Owner RepoName CreatedDate’-在第一行插入所有者RepoName CreatedDate
column -t-將給定數據轉換為表
我建議建立命令,并在每個階段檢查輸出是否正確.
linux shell,您的命令有幾件令人驚訝的事情:
>查找文件查找的文件完全是.log.txt,而不是擴展名.
>第二個xargs調用-將.log.txt文件的內容轉換為文件名.
標簽:linux,awk,sed,command
來源: https://codeday.me/bug/20191013/1910811.html
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态