日付から年(mm/dd/yyyy)を抽出する方法

日付から年(mm/dd/yyyy)を抽出する方法

mm/dd/yyyy 形式で日付から年を抽出するには?

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

01/01/2001
05/16/1970
06/08/2010

sedを使用してこの日付から年だけを抽出するにはどうすればよいですか?

答え1

次のようにしてみてくださいsed

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' > newfile

呼び出したファイルを読み取り、file結果を新しいファイルに書き込みますnewfile(必要に応じて置き換えます)。

年を収集するには、次のようにします。

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' | tr ' ' \\n | grep . | sort -nu

答え2

echo "01/01/2001 05/16/1970 06/08/2010" > datefile
sed 's:[0-1][0-9]/[0-3][0-9]/::g' datefile

結果:2001 1970 2010

これは、すべての日付が1行にあるときと、各日付が別々の行にあるときに機能します。明確さを助けるために区切り記号が提供されています:。グローバルgオプションは、すべての有効な置換を実行します。

答え3

日付は米国の「MM / DD / YYYY」形式なので、日付を含むファイルから直接dateGNUを使用できます。dates

$ date -f dates "+%Y"
2001
1970
2010

次のように、よりクールなフォーマットを指定できます。

$ date -f dates "+%F is in %Y and is a %A"
2001-01-01 is in 2001 and is a Monday
1970-05-16 is in 1970 and is a Saturday
2010-06-08 is in 2010 and is a Tuesday

%Y書式設定順序(など)はGNUのマニュアルに記載されていますdate

GNU が処理する入力フォーマットについてはdate後述する。GNU coreutils マニュアル

答え4

そしてawk

awk -F'/' '{print $3}' textfile

関連情報