私はそれを使用していますが、zsh
解決策が開いています。bash
次のコマンドがあるとしましょう。
ls **/*/assessment(.) | xargs egrep "(^ \[\./.*\]$|^ input = .*$)"
これにより、次のような出力が提供されます。
<path-01-to>/assessment: [./input_file_01]
<path-01-to>/assessment: input = 'input_file_01.i'
<path-02-to>/assessment: [./input_file_02]
<path-02-to>/assessment: input = 'input_file_02.i'
<path-02-to>/assessment: [./input_file_02b]
<path-02-to>/assessment: input = 'input_file_02b.i'
<path-03-to>/assessment: [./input_file_03]
<path-03-to>/assessment: input = 'input_file_03.i'
[./title]
input
各ペア()が同じ行になるように行を縮小したいと思います。したがって、予想される出力は次のようになります。
<path-01-to>/assessment: [./input_file_01] input = 'input_file_01.i'
<path-02-to>/assessment: [./input_file_02] input = 'input_file_02.i'
<path-02-to>/assessment: [./input_file_02b] input = 'input_file_02b.i'
<path-03-to>/assessment: [./input_file_03] input = 'input_file_03.i'
私はusingを見ましたが、tr -d "\n"
すべてを1行にまとめます。awk
おそらく他の言語がこれに適していると思います。
編集する:
以下は入力ファイルの例ですassessment
。
パス/01/ターゲット/評価:
[Tests]
[./input_file_01]
type = RunApp
input = 'input_file_01.i'
[../]
[]
パス/02/ターゲット/評価:
[Tests]
[./input_file_02]
type = RunApp
input = 'input_file_02.i'
cli_args = 'blah blah'
[../]
[./input_file_02b]
type = CSVDiff
input = 'input_file_02b.i'
[../]
[]
答え1
これは、awkを使用するすべてのUNIXシステムのすべてのシェルで機能します。
$ awk '/^ *\[\.\//{title=$1} /^ *input =/{print FILENAME ":", title, "=", $NF}' */*/assessment
01/to/assessment: [./input_file_01] = 'input_file_01.i'
02/to/assessment: [./input_file_02] = 'input_file_02.i'
02/to/assessment: [./input_file_02b] = 'input_file_02b.i'