shell - 匹配一行中的确切单词 - Unix
问题描述
我正在尝试识别行中字符串的完全匹配。但无法获得实际所需的输出。
线
# file: /test/test1 # owner: own # group: accnt group::--x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x user:an:rw-
图案
user::rwx
命令
echo "# file: /test/test1 # owner: own # group: accnt group::--x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x user:an:rw-" | grep -w "user::rwx" | wc -l
预期产出
0
实际输出
1
尝试了其他选项
echo "# file: /test/test1 # owner: own # group: accnt group::--x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x user:an:rw-" | fgrep -x "user::rwx" | wc -l
echo "# file: /test/test1 # owner: own # group: accnt group::--x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x user:an:rw-" | grep -Eo "user::rwx" | wc -l
echo "# file: /test/test1 # owner: own # group: accnt group::--x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x user:an:rw-" | grep -wo "user::rwx" | wc -l
解决方案
编辑:如果您想打印具有确切单词的行,请尝试以下操作。
var="user::rwx"
awk -v var="$var" 'match($0,var){count++} END{print count}' Input_file
请您尝试以下操作。如果在文件的任何行中找到任何完全匹配,这将打印 0。
var="user::rwx"
awk -v var="$var" 'match($0,var){print substr($0,RSTART,RLENGTH)}' Input_file
恕我直言,为什么 OP 的代码不起作用,因为 OP 正在使用 wc 命令,该命令将给出输出中的行数,但看起来 OP 想要在0
找到匹配项时打印(如果我在这里没有错)
推荐阅读
- javascript - Textarea scrollHeight 不更新防止自动调整大小
- javascript - 用 JavaScript 替换或切换计数器?
- google-bigquery - How to fix 'User does not have permission to query table XYZ.' in BigQuery?
- arrays - 如何更新数组中的地图数据?颤振火力基地
- c++ - 包括MMSystem.h
- php - 在 Symfony 3.4 中手动散列(即编码)字符串值
- common-lisp - 为什么 SBCL 抱怨 setf?
- r - 为 R 3.6 安装 igraph 时出现问题
- python - 从图像中删除红色文本
- python - LightGBM 使用自定义评估函数和内置损失函数提前停止