ファイルリストの前に_Variable_フォルダ名を追加する

ファイルリストの前に_Variable_フォルダ名を追加する

以下を含むテキストファイルが提供されます。

AF002 AI003 AA001 AD005 AD006 AI002 …

(レコード区切り記号で区切る)

次の内容を含むテキストファイルを生成します。

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

(同じレコード区切り記号で区切られます)

つまり、ファイル名の最初の2文字からパスを推論し、.jpgを追加します。

もう1つの目的は、多数のファイルを処理するため、入力ファイルの最初の3つの項目が[AF] [AZ] [0-1]かどうかをテストすることです。 3番目の文字(/)はテストに失敗するため、誤って出力ファイルにスクリプトを適用するのを防ぎます。

私のiMacでこれを行うためにAWKスクリプトを作成しようとしましたが、最も簡単なことはできません。スクリプトを別のコマンドファイルに入れたいです。締め切りが近づいています。

答え1

このように:

#!/bin/bash

str=$(<file)

for i in $str; do
    if [[ $i =~ ^[A-F][A-Z][0-1] ]]; then
        echo "${i:0:2}/$i.jpg"
    fi
done

 出力

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

答え2

この試み、

awk '{for (i=1;i<=NF;i++) print substr($i,1,2)"/"$i".jpg" }' file.txt

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg
  • for各フィールドを繰り返します。
  • substring各フィールドの最初の2文字を印刷します。

答え3

perl -pne "s/ /\n/g" p| awk '{print substr($1,1,2)"/"$0".jpg"}' 

出力

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

答え4

これはseparated by record separators、入力文字列が実際に改行で区切られていることを意味すると仮定します。

$ awk '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

それ以外の場合は、マルチキャラRSにGNU awkを使用してください。

$ awk -v RS='[[:space:]]+' '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

または awk オプションを使用します。

$ awk -v RS=' ' '/^[A-F][A-Z][0-1]/{sub(/\n/,""); print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

$ awk '{for (i=1;i<=NF;i++) if ($i ~ /^[A-F][A-Z][0-1]/) print substr($i,1,2) "/" $i ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

$ tr ' ' $'\n' < file | awk '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}'
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

関連情報