2016-07-19 11 views
1

ディレクトリ内にファイルのリストがあり、各ファイルごとに一意の文字列の開始インデックスを見つける必要があります。それぞれのファイルに共通です。シェルスクリプトでこれを解決するのが得策かもしれません。シェルスクリプト内のすべてのファイル内の一意の文字列のインデックスを開始

enter image description here

は、ファイルのリストであると私は、文字列のインデックスを開始見つけたいと仮定し、それぞれとすべてのファイルに確実に来る「こんにちは、これは、ビジェイ、クマーです」。

+0

私はあなたがディレクトリ内のファイルのリストの中で共通の接頭辞を見つけたいと思いますが、それははっきりしています。しかし、私は理解していない "文字列の開始インデックスを検索したいと仮定します"、こんにちは、これは、ビジェイ、クマール "は、それぞれのeveryfileで確かに来るでしょう。あなたはより良く説明できますか? – ddb

+0

例えば、私は文字列 "、hi、this、is、vijay、kumar"を与えています。これはそれぞれのファイルの内容で一度だけ出てきます。すべてのファイル。 –

答えて

0

のは、これらのテストファイルを考えてみましょう:

$ cat file1 
,hi,this,is,vijay,kumar 
$ cat file2 
Some text here,hi,this,is,vijay,kumar 
$ cat file3 
Some more text 
here that goes 
on,hi,this,is,vijay,kumar 

バイトで、場所を見つけるには、各ファイル内の文字列の:

$ grep -ob ',hi,this,is,vijay,kumar' file* 
file1:0:,hi,this,is,vijay,kumar 
file2:14:,hi,this,is,vijay,kumar 
file3:32:,hi,this,is,vijay,kumar 

-bはオフセット0ベースのバイトを返すためにはgrepに指示します入力ファイル内にあります。 -oは、一致した文字列のバイトオフセットを返すようにgrepに指示します。一致した文字列がある行は返しません。

結果から、文字列はfile1のバイトオフセット0、file2のバイトオフセット14、file3のバイトオフセット32で発生することがわかります。

をファイルの名前に置き換えます。また、より簡単には、対象のファイルの名前と一致する任意のglobを置き換えます。あなたのイメージから、それは201606231142_63*かもしれません。

+0

こんにちはジョン、 これは私があなたが提案するコマンドを実行するとパテで表示されていた方法です。 201606231442_6372.214:0:、CLT、******************、ES、 201606231442_6373.214:0:、CLT、***** ***************、ES、 ファイル名の後ろに「0」をハイライトしたい –

+0

「grep -ob」、こんにちは、これは、vijay、kumar 'ファイル* | sed:/ [0-9] *:/ $(tput smso)&$(tput rmso)/ " – John1024

関連する問題