次のような行のログファイルがあります。
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
www.website.pl/some,site.html
すべての行からのみ取得するにはどうすればよいですか?
これは「sed」または他のコマンドで実行できますか?
次のような行のログファイルがあります。
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
www.website.pl/some,site.html
すべての行からのみ取得するにはどうすればよいですか?
これは「sed」または他のコマンドで実行できますか?
Cutは、区切り文字とフィールドの選択もサポートしています。
$ cut -d\| -f7
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}
www.website.pl/some,site.html
はい、awkで。
でファイルを処理するだけです
awk -F '|' '{print $7}'
サンプル行の小さなトランスクリプト:
$ echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}' | awk -F '|' '{print $7}'
www.website.pl/some,site.html
警告これは、デリミタに使用されるパイプを除いて、ファイルに他のパイプがないことを前提としています。
これはあなたのために働くかもしれません:
echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'|
sed 's/^\(\([^|]*\)|\)\{7\}.*/\2/'
www.website.pl/some,site.html
または、すべてのサイトが始まる場合www
:
echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'|
sed 's/.*\(www[^|]*\).*/\1/'
www.website.pl/some,site.html