次のような形式のファイル名があります。
system-source-yyyymmdd.dat
「-」を区切り文字として使用して、ファイル名のさまざまなビットを解析できるようにしたいと思います。
次のように、 cut コマンドを使用して 3 つの「フィールド」のそれぞれを取得できます。
$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2
source
「-d」は区切り文字を指定し、「-f」は必要なフィールドの数を指定します
必要に応じて、awkは cut よりも柔軟です。最初のティーザー:
# echo "system-source-yyyymmdd.dat" \
|awk -F- '{printf "System: %s\nSource: %s\nYear: %s\nMonth: %s\nDay: %s\n",
$1,$2,substr($3,1,4),substr($3,5,2),substr($3,7,2)}'
System: system
Source: source
Year: yyyy
Month: mm
Day: dd
問題は、awk を「より柔軟」と表現することは、確かに iPhone を強化された携帯電話と呼ぶようなものだということです ;-)
コマンドを使用しcut
ます。
例えば
echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'
最初のビットを抽出します。
パラメータの値を変更して-f
、適切なパーツを取得します。
カットコマンドのガイドは次のとおりです。
もう 1 つの方法は、シェルの内部解析ツールを使用することです。これにより、子プロセスを作成するコストが回避されます。
oIFS=$IFS IFS=- file="system-source-yyyymmdd.dat" $ファイルを設定 IFS=$oIFS echo "ソースは $2"