我需要制作一个unix脚本来读取文件中的第一个单词

时间:2014-12-26 15:07:45

标签: unix

我需要制作一个unix脚本来读取文件中的第一个单词,如果那是" Mon,Tue ...... Sat,Sun"那么它将打印echo 0或者echo 1

我正在尝试使用grep命令,但它没有工作

3 个答案:

答案 0 :(得分:2)

当您需要解析单词的输入 awk 比grep更好时,它仍然可以执行grep所做的事情,但也可以使用简单的脚本来处理每一行。

这是我对解决方案的看法:

awk 'NR==1{c=0} $1~/Sun|Mon|Tue|Wed|Thu|Fri|Sat/{c=1} END{print c}' test.txt

我鼓励您在this (short) tutorial

中了解有关awk的更多信息

答案 1 :(得分:2)

这甚至可以在没有grepawk的情况下完成,仅使用bash内置函数(假设您的shell为bash - 这也可以在ksh中使用还有zsh,可能在sh,但不是csh,其中语法有点不同):

read firstword otherstuff < myfile.txt
case "${firstword}" in
  Sun|Mon|Tue|Wed|Thu|Fri|Sat) echo 1;;
  *) echo 0;;
esac

你也可以使用正则表达式匹配来避免case语句(这绝对只是bash - 但是):

if [[ "${firstword}" =~ ^(Sun|Mon|Tue|Wed|Thu|Fri|Sat)$ ]]; then

这只是一个偏好问题,但是......

答案 2 :(得分:0)

尝试egrep命令,如:

head -1 myfile.txt | egrep '^[Sun|Mon|Tue|Wed|Thu|Fri|Sat] .*'; echo $?