我需要制作一个unix脚本来读取文件中的第一个单词,如果那是" Mon,Tue ...... Sat,Sun"那么它将打印echo 0或者echo 1
我正在尝试使用grep命令,但它没有工作
答案 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
中了解有关awk的更多信息
答案 1 :(得分:2)
这甚至可以在没有grep
或awk
的情况下完成,仅使用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 $?