2016-12-18 2 views
0
for file in *.doc; do grep '/[A-Z\.]{225}/' $file > $file.txt; done; 

ファイルのディレクトリには、各ファイルに225文字の文字列(すべての大文字がドット "。"で区切られています;ドットは断続的です。私はこの文字列を抽出し、それを15x15グリッドのデータとして提示する必要があります。ファイル内のgrep文字列の検索方法。操作する。新しいファイルに書き込みますか?

文字列を見つけようとしましたが、キャリッジリターンを15文字ごとに追加してから、新しい文字列を新しいファイルにコピーします。またはすべての15x15グリッドを1つのファイルに連結します。

私はgrep文字列について何かを理解していません。文字列を1つのファイルで見つけようとしても、結果は正しくありません。

grep '/[A-Z\.]{225}/' file332.doc > file332.txt; 

サンプル入力文字列X = AZ:

XXXXX.XXXXX.XXXXXXXX.XXXXX.XXXXXXXXXXXXXX.XXX..XXXXXX..XXXXXXXXX.XXXXXXXXXXXXX.XXX.XXXX ... XXXXX..XXX.XXX .XXXXXXXXXXXXXXX.XXX.XXX..XXXXX ... XXXX.XXX.XXXXXXXXXXXXX.XXXXXXXXX..XXXXXX..XXX.XXXXXXXXXXXXXX.XXXXX.XXXXXXXX.XXXXX.XXXXX

所望の出力:

XXXXX.XXXXX.XXX 
    XXXXX.XXXXX.XXX 
    XXXXXXXXXXX.XXX 
    ..XXXXXX..XXXXX 
    XXXX.XXXXXXXXXX 
    XXX.XXX.XXXX... 
    XXXXX..XXX.XXX. 
    XXXXXXXXXXXXXXX 
    .XXX.XXX..XXXXX 
    ...XXXX.XXX.XXX 
    XXXXXXXXXX.XXXX 
    XXXXX..XXXXXX.. 
    XXX.XXXXXXXXXXX 
    XXX.XXXXX.XXXXX 
    XXX.XXXXX.XXXXX 

どれでも助けに感謝します。

+0

は、すべて16文字離れている、あなただけの' TRを使用して、新しい行にすべてのドットに変換することができます'(transliterate)cmd、すなわち' tr '。' '\ 012' <"$ file" .doc> "$ file" .txt'それはあなたが必要とするものに近づくでしょうか?がんばろう。 – shellter

+0

申し訳ありませんが、指定する必要があります、ドットが断続的です。文字の間に3〜15桁の間の任意の場所。 – verbatim

+1

あなたの質問にそのサンプル入力のサンプル**入力と**あなたの希望する**出力**を加えてください。 – Cyrus

答えて

1

私はお勧め:

grep -Eo '[A-Z\.]{225}' file332.doc | fold -b -w 15 > file332.txt 

file332.txtへの出力: `dots`を想定し

 
XXXXX.XXXXX.XXX 
XXXXX.XXXXX.XXX 
XXXXXXXXXXX.XXX 
..XXXXXX..XXXXX 
XXXX.XXXXXXXXXX 
XXX.XXX.XXXX... 
XXXXX..XXX.XXX. 
XXXXXXXXXXXXXXX 
.XXX.XXX..XXXXX 
...XXXX.XXX.XXX 
XXXXXXXXXX.XXXX 
XXXXX..XXXXXX.. 
XXX.XXXXXXXXXXX 
XXX.XXXXX.XXXXX 
XXX.XXXXX.XXXXX 
+0

ありがとうございます。なぜか分かりませんが、試してみると出力ファイルはゼロバイトです。 grepは文字列を検索していないようです。このフォーラムに来る前に、私は同じ結果で同様のgrep文字列を試していました。 – verbatim

+0

私はMacを使いましたが、それは何か関係がありますか? – verbatim

+0

'grep -Eo'を' egrep'に置き換えてみてください。 – Cyrus

関連する問題