web-dev-qa-db-ja.com

UNIXのcutコマンドで文字列を区切り文字として使用することはできますか?

文字列を区切り文字として使用してテキストのリストを切り取りたい場合、それは可能ですか?たとえば、シェルスクリプトのリストが同じPerlスクリプトを呼び出すディレクトリがあります。

abc.pl

だから私がするとき

$grep abc.pl * 

そのディレクトリでは、次の結果が得られます

xyz.sh: abc.pl 1 2
xyz2.sh: abc.pl 2
mno.sh: abc.pl 3
pqr.sh: abc.pl 4 5

基本的に、「abc.pl」の後のすべての出力が必要です(現在Perlに渡されている範囲引数を確認するため)

試したとき

$grep abc.pl * | cut -d'abc.pl' -f2

OR

$grep abc.pl * | cut -d'abc\.pl' -f2

それは私に

cut: invalid delimiter

私がカットのために人を読むとき、それは述べています

delimはマルチバイト文字にすることができます。

私はここで何をしている/間違っていると解釈していますか?

17
Devang Kamdar

私がカットのために男を読んだとき、それは述べています...デリムはマルチバイト文字である可能性があります。

マルチバイトですが、文字列ではなく1文字だけです。

canti:~$ ll | cut --delimiter="delim" -f 1,2
cut: the delimiter must be a single character
Try `cut --help' for more information.

canti:~$ cut --version  
cut (GNU coreutils) 5.97

文字列として指定できるのは出力区切り文字のみです(この場合は役に立ちません)。

 --output-delimiter=STRING                                                          
        use STRING as the output delimiter the default is to use the input delimiter
8
alex vasi

これを使ってみてください。

$grep abc.pl * | awk -F 'abc.pl' '{print $2}'

-F fs --field-separator fs入力フィールド区切り文字にfsを使用します(FS事前定義変数)の値)。

13
vkrishna

grep abc.pl | awk '{print $3, $4}'を使用してみませんか?

7
alamar

$ grep abc.pl * |カット-d '' -f3-999

その場合は、区切り文字としてスペース文字を使用してください。

0
wdingus

または、Rubyなどを試すこともできます。

grep abc.pl * | Ruby -ne 'p $_.chomp.split("abc.pl").last'
0
Jose Alban