3番目のコロン以降のすべてのパターンを印刷する必要があります。

3番目のコロン以降のすべてのパターンを印刷する必要があります。

以下の「sometest、readtest、writetest」の前に、これらすべての項目を削除する必要があります。

2019-12-09 10:04:34 +0000 Test (err): sometest: some : text server:::test
2019-12-09 10:04:34 +0000 Test (notice): readtest: some
2019-12-09 10:04:34 +0000 Test (info): writetest: some ::: text

予想出力:

sometest: some : text server:::test
sometest: some
sometest: some ::: text

答え1

そしてsed

sed 's/[^:]*:[^:]*:[^:]*: //' file

または、拡張正規表現(ERE)を使用してください。

sed -E 's/([^:]*:){3} //' file

変える

  • :その後に文字以外の文字が続きます:(3回)。
  • その後に空白文字が続きます。

空の文字列として。

出力:

sometest: some : text server:::test
readtest: some
writetest: some ::: text

答え2

sed角かっこがあると確信している場合は、次のことを試すことができます。

sed 's/^.*): //' file

出力:

sometest: some : text server:::test
readtest: some
writetest: some ::: text

または切り取りを使用してください。

cut -d':' -f4- file | sed 's/^ //'

答え3

これを行うために選択できるさまざまな方法があるため、これは興味深い質問です。そのうちのいくつかは、予期しない入力があるときにやや堅牢です。堅牢性のために、sometest、readtest、writetestキーワードを明示的に一致させますか?または3番目のコロンと一致させてください。 cutコマンドを使用するか、sed、awk、perl、または 。 。

無視する必要がある日時でコロンを指摘すると、問題がより明確になります。

# after 3rd colon (but forgetting to strip the space after it)
sed s/[^:]*:[^:]*:[^:]*://

# this cut command does the same as that sed
cut -d: -f 4-

# A cut command delimiting on space might be better actually 
#  assuming two words always to be stripped "Test (something)" 
# this cut command leaves out the whitespace as expected 
cut -d" " -f6-

# after 3rd colon (strip leading space):
sed "s/[^:]*:[^:]*:[^:]*: *//"

# after 3rd colon (strip leading WHITEspace):
sed "s/[^:]*:[^:]*:[^:]*:\s*//"

# cut all those things explicitly before "sometest,readtest,writetest"
sed -E 's/.*(some|read|write)(test:)/\1\2/'

# exactly the same command works in perl
perl -pe 's/.*(some|read|write)(test:)/\1\2/'

期待される出力に無効な先行キーワードが含まれているようです。

sometest: some : text server:::test
readtest: some
writetest: some ::: text

最後に、例とログファイルには、「test(something)」ビットを保持するためにcutコマンドを使用するなど、タイムスタンプを削除したい場合があります。

# A cut command to just strip the timestamp and leave in the "Test (something)" 
cut -d" " -f4-

関連情報