
ファイルから日付(「5月1日」など)で始まるすべての行を検索するには、sedまたはawkを使用してどうすればよいですか?このデータを抽出して画面またはファイルに送信する必要があります。ありがとうございます。
答え1
次に始まる行を抽出するにはMay 1
:
grep "^May 1\b" file
または:
sed -n '/^May 1\>/p' file
または:
awk '/^May 1\>/' file
\>
上記の2つは、単語境界正規表現をサポートするGNU awkやsedなどのツールがあると想定しています。単語境界の目的は、正規表現の一致を防ぐことです(例:)May 10
。
もっと
5月のある日を探している場合:
grep -E "^May [[:digit:]]{1,2}\b" file
ある月の特定の日付を探している場合:
grep -E "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [[:digit:]]{1,2}\b" file
答え2
printf %s\\n 'Apr 30 aaa' \
'May 1 bbb' \
'Feb 29 ccc' \
'Feb 30 ddd' |
sed -n '/^\(Apr\|Jun\|Sep\|Nov\) \([1-9]\|[12][0-9]\|30\)\>/p
/^\(Jan\|Mar\|Jul\|Aug\|May\|Oct\|Dec\) \([1-9]\|[12][0-9]\|3[01]\)\>/p
/^\(Feb\) \([1-9]\|[12][0-9]\)\>/p'
出力:
Apr 30 aaa
May 1 bbb
Feb 29 ccc