パス名の最初の部分と行末の数字と一致します。

パス名の最初の部分と行末の数字と一致します。

findgrepaとパイプには、次の種類の出力があります。

./Columbia/815425_0001104659-11-049107.txt:         CENTRAL INDEX KEY:              0000815425
./Columbia/815425_0001104659-12-060231.txt:         CENTRAL INDEX KEY:              0000815425
./Columbia/815425_0001104659-13-066298.txt:         CENTRAL INDEX KEY:              0000815425
./Dimensional Advisors/355437_0001137439-04-000108.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-05-000205.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-06-000306.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-08-000364.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-09-000076.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-12-000295.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001140361-10-035592.txt:         CENTRAL INDEX KEY:              0000355437

欲しい

Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437

考えていますsedが、grepどのように合わせるか混乱します:マッチングパート1:(私はどのようにマッチングしますか/?)

erik Funds$ cat myoutput | egrep -o "[A-Z].*/"
Columbia/
Columbia/
Columbia/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/

最後の10桁の数字は次のとおりです。

erik Funds$ cat myoutput | egrep -o "[0-9]{10}$"
0000815425
0000815425
0000815425
0000355437
0000355437
0000355437
0000355437
0000355437
0000355437
0000355437

答え1

awkフィールド区切り記号として使用し、/フィールド2とフィールド3を印刷します(必要な0パディングを使用)。

... | awk -F/ '{ printf("%s %010d\n", $2, $3) }'

例:

$ cat file.txt 
./Columbia/815425_0001104659-11-049107.txt:         CENTRAL INDEX KEY:              0000815425
./Columbia/815425_0001104659-12-060231.txt:         CENTRAL INDEX KEY:              0000815425
./Columbia/815425_0001104659-13-066298.txt:         CENTRAL INDEX KEY:              0000815425
./Dimensional Advisors/355437_0001137439-04-000108.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-05-000205.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-06-000306.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-08-000364.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-09-000076.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001137439-12-000295.txt:         CENTRAL INDEX KEY:              0000355437
./Dimensional Advisors/355437_0001140361-10-035592.txt:         CENTRAL INDEX KEY:              0000355437

$ awk -F/ '{ printf("%s %010d\n", $2, $3) }' file.txt
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437

答え2

$ sed -E 's|^\./([^/]+)/.*\s([0-9]+)$|\1 \2|' myoutput
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
  • -E拡張正規表現
  • ^\././行の先頭で一致
  • ([^/]+)/文字キャプチャ
  • /.*\s/任意の数の文字と一致し、その後に空白文字が続きます。
  • ([0-9]+)$行末の数字をキャプチャします。
  • \1 \2キャプチャされたグループを間にスペースを入れて貼り付けます。

sed\改行を除くすべての区切り文字が許可されるため、|ここではエスケープを防ぐために使用されます。/

答え3

awk - FSを使用した分割

スラッシュ区切り文字で入力を分割し、スペース区切り文字に再分割するように設定した場合は、awk正しいフィールドを選択できます。

<infile awk '{ n=$2; FS=" +"; $0=$0; print n, $NF; FS="/" }' FS=/

GNU awk - FPATフィールド記述の使用

フィールドを正しく説明すると、目的のFPAT結果が得られます。以下は、入力に適した例です。

<infile awk '{ print $1, $NF }' FPAT='[[:alnum:][:space:]]+'

出力

Columbia               0000815425
Columbia               0000815425
Columbia               0000815425
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437
Dimensional Advisors               0000355437

答え4

tr以下を介してデータを転送する別のソリューションは次のとおりですcut 。

…|tr ':' '/'|cut -d'/' -f2,5|tr -d '/'

最初の列は、2番目の列と同様に、最後の列を分離するための区切り文字として使用できるように置き換えられますtr。複数の列を抽出したため、使用しない限り、出力には区切り文字が含まれますが、削除を使用するとこの文字が短くなります。:/cut/cut/--output-delimitertr -d

複数のスペースが必要ない場合は、次のようにパイプを追加できますsed 。

…|sed 's/  */ /g'

関連情報