-3
とキー値ファイルを折りたたみます。前の例では、出力は次のようになりますは私のようなファイルがbashコマンドライン
baz I love you.
foobar Me too.
私はAWKやPython、Perlの、等私にそれを行うことができる知っている
(第2列はスペースまたはタブによって接合されることになります)プレーンなBashコマンドでやりたい
とキー値ファイルを折りたたみます。前の例では、出力は次のようになりますは私のようなファイルがbashコマンドライン
baz I love you.
foobar Me too.
私はAWKやPython、Perlの、等私にそれを行うことができる知っている
(第2列はスペースまたはタブによって接合されることになります)プレーンなBashコマンドでやりたい
bashだけを使用する場合は、while
ループ内のファイルを読み込み、値を連想配列に累積します。
$ declare -A values
$ while read -r key val; do values["$key"]+="$val "; done < file
$ for key in "${!values[@]}"; do printf "%s\t%s\n" "$key" "${values[$key]}"; done
baz I love you.
foobar Me too.
配列のキーの順序は不定であることに留意されたいです。出力がbazでfoobarであるのは偶然です。特定の注文を出力する必要がある場合は、もう少しコードが必要です。
1つの組み込みbashコマンド(存在しない)が必要ですか、組み込み関数のみを使用するbashコード(既に試したことはありますか?)を参照したいですか?特定のツール(例えば、 'join'に似ています)? –
@ MartinNyoltうまくいけば、私は、 'join'、' sort'や 'paste'のようなものを含む、巧妙なコマンドを期待していました。 (v in a)print v "\ t" a [v]} "file"のために 'awk '{a [$ 1] = a [$ 1]" "$ 2} END"を試しました。まあ、私は何か不可能に頼んだかもしれない? – unamourdeswann
ええ、でも、なぜですか?なぜ実際のテキスト解析言語よりもbashを使いたいのですか?並べ替えと貼り付けはすべてbashではありません。 – 123