我有一个基本上是日志文件的文本文件。因为有些日志以Timestamp和LogID开头,格式为
timestamp=2014-08-18 23:59:48.315|logId=22fef71f-979a-46aa-81b5-432d34130c34| ( followed by some text )
timestamp=2014-08-18 22:59:48.315|logId=22fef71f-979b-46aa-81b5-432d34130htf| ( followed by some text )
我需要摆脱时间戳并获得剩下的部分。
在这种情况下如何使用“sed”命令。
答案 0 :(得分:2)
使用cut
:
cut -f 2- -d \| file
-f 2-
匹配从第2个字段到行尾的所有内容。-d \|
将|
设置为字段分隔符。使用sed
:
sed 's@^[^|]*|@@' file
[^|]
匹配任何不是|
输出:
logId=22fef71f-979a-46aa-81b5-432d34130c34| ( followed by some text )
logId=22fef71f-979b-46aa-81b5-432d34130htf| ( followed by some text )
答案 1 :(得分:1)
如果你有一个由单个字符分隔的字段(在这种情况下是'|'),cut
通常是要走的路,就像在konsolebox的答案中一样。如果分隔符不一定是单个字符(例如,任何数量的空格),那么awk
可能就是答案。
但是,由于您专门询问了sed
,这将有效:
sed 's/^[^|]*|//'
它替换( s )文本从行的开头( ^ )开始,并包含任意数量的非管道( [^ |] * )后跟一个管道( | ),替换为空( // 之间没有任何东西)。