21

文字列を区切り文字として使用してテキストのリストを切り取りたい場合、それは可能ですか? たとえば、シェルスクリプトのリストが同じ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

また

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

それは私を与えます

cut: invalid delimiter

man for cut を読むと、次のように表示されます

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

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

4

5 に答える 5

10

man for cut を読むと、 ... delim はマルチバイト文字にすることができます。

マルチバイトですが、文字列ではなく 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
于 2009-05-13T11:12:28.817 に答える
7

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

于 2009-05-13T10:56:55.177 に答える
0

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

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

于 2009-05-13T11:17:41.320 に答える
0

または、たとえばRubyを試すことができます:

grep abc.pl * | ruby -ne 'p $_.chomp.split("abc.pl").last'
于 2016-11-15T10:50:56.157 に答える