Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 匹配特定单词(不包括以“开始”的单词)&引用;_Shell_Csv_Awk_Tcsh - Fatal编程技术网

Shell 匹配特定单词(不包括以“开始”的单词)&引用;

Shell 匹配特定单词(不包括以“开始”的单词)&引用;,shell,csv,awk,tcsh,Shell,Csv,Awk,Tcsh,当某个单词在CSV文件中以问号开头时,我很难找到如何匹配该单词的方法。我需要使用tcsh代码 我的意思是,我可以匹配“cat”,但不包括“zcat”,但它包括“?cat”。这是我的密码: #!/bin/tcsh -f set viewSet = PRE_IMPL set nbViewSet=`awk -F ";" '{ for (i=1; i<=NF; i++) { if ($i == "VIEW SETS") print i } }' csv.cs

当某个单词在CSV文件中以问号开头时,我很难找到如何匹配该单词的方法。我需要使用tcsh代码

我的意思是,我可以匹配“cat”,但不包括“zcat”,但它包括“?cat”。这是我的密码:

#!/bin/tcsh -f
set viewSet = PRE_IMPL
set nbViewSet=`awk -F ";" '{ for (i=1; i<=NF; i++) { if ($i == "VIEW SETS") print i } }' csv.csv`
/usr/bin/awk -F ";" -v col="$nbViewSet" '(match($col, '"/\<"$viewSet"\>/"') != 0) {print}' csv2.csv
所以这里我只想匹配单词“PRE_IMPL”,而不是“zPRE_IMPL”或“?PRE_IMPL”。我的代码设法排除了“zPRE_IMPL”,但没有排除“?PRE_IMPL”,我没有设法改变这一点,输出是:

;;;;;;;;PRE_IMPL;
;;;;;;;;?PRE_IMPL;
;;;;;;;;PRE_IMPL;

如何将代码更改为仅与“PRE|IMPL”匹配?

您可以使用类似于
(^ |[^?])PRE|IMPL的正则表达式来要求匹配项位于字段开头,或者位于非问号的字符旁边

切向而言,这里不需要运行Awk两次。(或者在一个地方使用
/usr/bin/awk
,在另一个地方使用
awk

awk-F”;“-v viewSet=“$viewSet””

NR==1{(i=1;i@Sylvain_cmz,很好,您已经以代码的形式展示了您的努力,请您在问题中发布更清晰的示例,然后让我们知道。幸运的是,这避免了任何依赖于您使用的shell的代码。我将重复我的建议,尝试从
tcsh
过渡,因为它的用户群非常小更长的时间。我的Awk不喜欢
“\>”
,但如果它对你有用,那就去吧。我用
“([^A-Za-z0-9|]\124;$)”
)替换了它。谢谢“我所需要的一切,我现在可以很好地过滤我的CSV文件了!很高兴我能这么快得到帮助:)我会看看我能做些什么来摆脱tcsh,我一开始就用这个脚本来学习regexp和shell的使用。可以肯定的是,tsch并不是最有效的脚本,我会看看我能改变什么!
;;;;;;;;PRE_IMPL;
;;;;;;;;?PRE_IMPL;
;;;;;;;;PRE_IMPL;
awk -F ";" -v viewSet="$viewSet" '
  NR==1{ for (i=1; i<=NF; i++) if ($i == "VIEW SETS") col=i; next }
  match($col, "(^|[^?])" viewSet "\>")' csv2.csv