txtファイルからいくつかのテキストを抽出し、既存のファイルbashに追加

txtファイルからいくつかのテキストを抽出し、既存のファイルbashに追加

すべての専門家

同じディレクトリに2種類のファイルがあります

例1)Record1.txt(レコード2、レコード3、レコード4...)

11111 absda qwedc
11112 uiyds dqeds
11113 eqwev jfsec ...

ex2)Summary1.txt(要約2、要約3、要約4...)

----some data is written---- 
.....
.....
***RESULT 111.114 30.344 90.3454***  OTHERNUMBER#1 OTHERNUMBER#2 ..... 
.....
.....

私がしたいことは抽出です。結果X(数値) Y(数値) Z(数値)要約#.txtレコード。その後、その場所をそのレコード#.txtに配置し、次のようにいくつかの情報を追加したいと思います。

X Y Z
111.114 30.344 90.3459

11111 absda qwedc
11112 uiyds dqeds
11113 eqwev jfsec ...

したがって、最終ファイルRecord#.txtを上に表示したいと思います。私はsedとcatを試しましたが、どちらも失敗しました。

よろしくお願いします!

ベストアンサー1

私が正しく理解した場合、私の提案は次のとおりです。

for i in record*.txt; do
  xyz=$(grep -oP "(?<=RESULT ).*(?=\*\*\*)" $i)
  sed -i "1 iX Y Z\n$xyz\n" summary${i//record/}
done

名前付きファイルを繰り返します。record*.txt

for i in record*.txt; do

RESULTとの間の文字列をキャプチャします。***

xyz=$(grep -oP "(?<=RESULT ).*(?=\*\*\*)" $i)

ファイルの最初の行にXYZを追加し、その後にキャプチャされたパターンを追加します。summary*.txt

sed -i "1 iX Y Z\n$xyz\n" summary${i//record/}

おすすめ記事