4

、、、、または何でも、のsedgrepの文字の行ごとに最初の出現を取得するにはどうすればよいですか?awktrbash script

'      and      .    

このファイルから。(文字は一重引用符とピリオドです)。これは本当に難しいです、私はあなたが試みていることさえ大好きです。

そのため、コマンドは次のようになります。

理想的な出力:

orinak
pchovi
orinak

xpt

moon

次のファイル:

class GI_DnConstants {
        const BO_DOMAIN_NAME = 'orinak.backoffice.domain.com';
        const EX_DOMAIN_NAME = 'pchovi.extranet.domain.com';
        const WS_DOMAIN_NAME = 'orinak.www.domain.com';
        const PT_DOMAIN_NAME = '.partner.domain.com';
        const PTS_DOMAIN_NAME = 'xpt.partners.domain.com';
        const WS_SECURE_DOMAIN_NAME = '.secure.domain.com';
        const IMG_DOMAIN_NAME = 'moon.images.domain.com';
}
4

3 に答える 3

4

出力の空の行が必要ない場合、「ルックアラウンド」を使用したこのgrepは、必要なものを提供します。

grep -Po "(?<=')[^.']*(?=\.)" file

質問にawkのタグを付けたのを見たばかりです

次に、出力の空の行でこのawkを試してください。

awk -F"['.]" 'NF>2{print $2}' file

(例では、awkワンライナーが入力に対して機能します)

于 2013-03-26T11:12:39.973 に答える
1

これを試して:

sed -n "s/.*'\([^\.]*\)\..*/\1/p" input_file.txt

走る:

$ sed -n "s/.*'\([^\.]*\)\..*/\1/p"  input_file.txt
orinak
pchovi
orinak

xpt

moon


$ sed --version
GNU sed version 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-gnu-utils@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.
于 2013-03-26T11:02:12.667 に答える
0

速くて汚い:

egrep -o "'[^\.,;]+" file | cut -c2- 

注:これは空の行を印刷しません。

于 2013-03-26T11:07:54.670 に答える