使用cut awk grep和sed的基础知识

Zen*_*net 3 bash shell

我正试图从这个输出中提取年份:

sam@sam-laptop:~/shell$ date
Mon Feb  8 21:57:00 CET 2010

sam@sam-laptop:~/shell$ date | cut -d' ' -f7
2010

sam@sam-laptop:~/shell$ date | awk '{print $6}'
2010
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以得到相同的结果?使用也许grep,sed等?谢谢!

Mik*_*itz 10

如果您真的只是寻找当前年份date,您可能会考虑直接运行它.

date +%Y
Run Code Online (Sandbox Code Playgroud)

无需后期处理.:)


更新:关于文本处理的评论(因为OP正在寻找那些)

cut/ awk/ sed是伟大的拉开的文本行.grep很适合找到你想要的线条.

更加模糊(不太便携)的是特定bash的类似regexp的运算符,但它们可以快速有趣地使用.

$ MYDATE=`date`
$ echo $MYDATE
Mon Feb 8 16:28:04 EST 2010
$ echo ${MYDATE##* }
2010
Run Code Online (Sandbox Code Playgroud)

  • `$()`比反引号更容易使用,更不容易出错(考虑引号和转义). (2认同)