web-dev-qa-db-ja.com

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

Mm/dd/yyyyの形式で日付から年を抽出するにはどうすればよいですか?

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

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

Sedを使用して、これらの各日付から年のみを抽出するにはどうすればよいですか?

1
user455555009
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
chandra

サンプルファイルの場合、単純に

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
2
tripleee

日付は米国の「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 )で説明されています。

1
Kusalananda

awkの場合:

awk -F'/' '{print $3}' textfile
0
Zumo de Vidrio