簡體   English   中英

Unix:使用sed刪除每行的一部分

[英]Unix: Using sed remove part of each line

我正在嘗試從文本文件的每一行中刪除Who:,WhatWhat,When時,Where以及行進空間。 下面是一個示例:

Who: Tester1+Password
What: Authentication Success
When: Tues March 20, 2015 08:15:02 UTD
Where: 198.192.1.2

如果要刪除第一個: ,則可以執行以下操作:

sed -re 's/(^[^:]+: )(.*)/\2/' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2

正如Glenn所建議的,我們可以通過刪除不需要的部分來完全避免捕獲組。

sed 's/[^:]\+: //' file

使用cut排除第一個以空格分隔的字段:

cut -d " " -f 2- file

將與“什么,什么地方,什么時候,什么人”匹配的模式放在捕獲組中,后跟冒號。 然后將匹配的字符替換為空字符串。 如果要進行不區分大小寫的匹配,請在最后添加i標志。

$ sed 's/^Wh\(ere\|en\|at\|o\):[[:blank:]]*//' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2

對於一般情況,您可以使用

sed 's/^[^[:blank:]]\+[[:blank:]]\+//' file
sed 's/^[^ ]* *//' YourFile

假設只有這四個字是可能的,並且作為您的樣本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM