行の末尾に別のサフィックスを追加する

行の末尾に別のサフィックスを追加する

次の内容を含むテキストファイルがあります。

John
Jack
Jerry

別のテキストファイルがあります。

2017
2015
2018

私は彼らが次のように見えることを望みます:

John2017
John2015
John2018
Jack2017
Jack2015
Jack2018
Jerry2017
Jerry2015
Jerry2018

どうすればいいですか?

ベストアンサー1

ファイルが小さいと仮定すると(bashまたは使用ksh93)、配列に読み込むことが可能です。

names=( $( <names.txt ) )
years=( $( <years.txt ) )

その後、各名前を各年と順番に組み合わせる二重ループを構成できます。

for n in "${names[@]}"; do
  for y in "${years[@]}"; do
    printf '%s%s\n' "$n" "$y"
  done
done

years.txt小さいが大きい場合names.txt:

years=( $( <years.txt ) )

while read n; do
  for y in "${years[@]}"; do
    printf '%s%s\n' "$n" "$y"
  done
done <names.txt

結果:

John2017
John2015
John2018
Jack2017
Jack2015
Jack2018
Jerry2017
Jerry2015
Jerry2018

ファイルを単一列のヘッダーなしのCSVファイルとして扱います。

$ csvsql -H --query "SELECT * FROM names CROSS JOIN years" names.txt years.txt | sed -e '1d' -e 's/,//'

これは関係を実装します。クロスコネクト両方のテーブルのデータに対して操作を実行し、すべてのコンマとともに出力の最初の行を削除します(csvsqlヘッダー行とコンマで区切られた値を持つ正しい形式のCSVを生成します)。

csvsqlの一部です csvkit

おすすめ記事