web-dev-qa-db-ja.com

文字列の最初のフィールドのみを印刷する

12/12/2013 14:32という日付があります。これを12/12/2013のみに変換します。文字列は1/1/2013 12:32または1/10/2013 23:41にすることができます。日付部分のみが必要です。

29
user2099444

これは、さまざまなUnixツールを使用して簡単に実行できます。

$ cut -d' ' -f1  <<< "12/12/2013 14:32"
12/12/2013

$ awk '{print $1}' <<< "12/12/2013 14:32"
12/12/2013

$ sed 's/ .*//' <<< "12/12/2013 14:32"
12/12/2013

$ grep -o "^\S\+"  <<< "12/12/2013 14:32"
12/12/2013

$ Perl -lane 'print $F[0]' <<< "12/12/2013 14:32"
12/12/2013
56
Chris Seymour
$ echo "12/12/2013 14:32" | awk '{print $1}'
12/12/2013

print $1->指定された文字列の最初の列を出力します。 12/12/2013

print $2->指定された文字列の2列目を出力します。 14:32

デフォルトでは、awkはスペース文字を区切り文字として扱います。

12

日付文字列が変数に格納されている場合、cutのような現代のシェルはできるため、awksed、またはbashのような外部プログラムを実行する必要はありません。 文字列操作 を直接実行する方が効率的です。

たとえば、bashの場合:

$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013
3
dogbane