Mm/dd/yyyyの形式で日付から年を抽出するにはどうすればよいですか?
次の日付のテキストファイルがあります。
01/01/2001
05/16/1970
06/08/2010
Sedを使用して、これらの各日付から年のみを抽出するにはどうすればよいですか?
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
オプションは、すべての有効な置換を行います。
サンプルファイルの場合、単純に
cut -d / -f3 file
これらの日付をループする場合は、ループにパイプします。
cut -d / -f3 file |
while read year; do ...
または、read
を使用して、カスタムIFS
値で分割します。
while IFS=/ read -r mm dd yyyy; do
: do something with "$yyyy"
done <file
日付は米国の「MM/DD/YYYY」形式であるため、日付を含むファイルdate
で直接GNU 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 manual )で説明されています。
awk
の場合:
awk -F'/' '{print $3}' textfile