27

次のような形式のファイル名があります。

system-source-yyyymmdd.dat

「-」を区切り文字として使用して、ファイル名のさまざまなビットを解析できるようにしたいと思います。

4

6 に答える 6

32

次のように、 cut コマンドを使用して 3 つの「フィールド」のそれぞれを取得できます。

$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2
source

「-d」は区切り文字を指定し、「-f」は必要なフィールドの数を指定します

于 2008-09-08T10:11:32.130 に答える
8

必要に応じて、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 を強化された携帯電話と呼ぶようなものだということです ;-)

于 2008-09-08T11:11:17.667 に答える
7

コマンドを使用しcutます。

例えば

echo "system-source-yyyymmdd.dat" | cut -f1 -d'-'

最初のビットを抽出します。

パラメータの値を変更して-f、適切なパーツを取得します。

カットコマンドのガイドは次のとおりです。

于 2008-09-08T10:10:18.640 に答える
1

もう 1 つの方法は、シェルの内部解析ツールを使用することです。これにより、子プロセスを作成するコストが回避されます。

oIFS=$IFS
IFS=-
file="system-source-yyyymmdd.dat"
$ファイルを設定
IFS=$oIFS
echo "ソースは $2"
于 2008-09-21T09:32:53.947 に答える