我正在试图找出为什么这将不会检查文件中的行和回显,您如何比较或检查字符串是否包含了什么?
#!/bin/bash
while read line
do
#if the line ends
if [[ "$line" == '*Bye$' ]]
then
:
#if the line ends
elif [[ "$line" == '*Fly$' ]]
then
echo "\*\*\*"$line"\*\*\*"
这个自定义命令有什么问题?
# Resize an image using convert
+ f \.jpg$ | f \.JPG$
R Resize image to fit within 800 pixel bounding square
size=800
convert "%f" -resize ${size}x${size} "%b-${size}.%x"
当我按F2键时,我得到:
错误:在.mc.menu中找不到合适的条目
我不明白为什么在以下使用grep的示例中,通配符*会有不同的解释:
find . -type f -name \*
结果:
./tgt/etc/test_file.c
./tgt/etc/speleo/test_file.c
./tgt/etc/other_file.c
./src/file.c
我想从这个命令中返回与模式匹配的文件,最终使用通配符*。但是:
find . -type f -name \* | grep "tgt/etc/*" # this one works
find . -type f -name \* | grep tgt/etc/* # not this
我的程序启动一些服务并将其输出存储在tmp变量中,如果变量以FATAL关键字开头,我想匹配它的内容吗?如果它包含,我将使用Port in use命令打印echo
例如,如果tmp包含FATAL: Exception in startup, exiting.
我可以用sed:echo $tmp | sed 's/^FATAL.*/"Port in use"/'来做
但是我想使用内置的if来匹配模式。如何使用内置功能的shell来匹配REGEX?
我经常混淆Bash3.x外壳球形:
? # Match any single character.
* # Match any string of characters (up until the asterisk).
[set] # Match any character in set (but not the entire set itself).
[!set] # Match any character not in set.
使用regex (特别是PCRE)。
我的问题是,为什么不把这些看作"Bash“(就像我们有"JavaScript rege
出于兼容性的原因,我正在将bash脚本移动到dash。是否有POSIX/Dash替代以下比较?
COMPARE_TO="^(lp:~?|https?://|svn://|svn\+ssh://|bzr://|bzr\+ssh://|git://|ssh://)"
if [[ $COMPARE =~ $COMPARE_TO ]]; then
echo "WE ARE COMPARED!"
fi
我有两份文件:
AAAAA_AAAA_BBBBBBBB_SSSSSS
AAAAA_BBBBBBBB_SSSSSS
我只想显示带有两个下划线的文件。
我用:
ls -1 ^?*_?*_?*$
我得到了:
ls: ?*_?*_?*$: No such file or directory
为什么?还有什么可以解决呢?
我必须找出一个文件中使用shell这个词的次数。我使用grep "shell" test.txt | wc -w来统计这个单词被使用了多少次,但是结果是4次而不是3次。
this is a test file
for shell_A
shell_B
sh
shel
and
shell_C
script project
我对grep中的反斜杠字符\和单引号感到困惑。据我理解,它保留了字面意思。例如
如果我做了echo 'This is \.,它就给了我This is \.
但是,如果我想匹配任何实际的.(句号),我需要使用‘。逃避…的特殊意义在正则表达式中。例如,如果一个文件是从demo.txt中提取的,那么
📷
我的问题是,在这种情况下,对于grep来说,“”如何不保留文字值?事实证明,这对我来说非常令人困惑。任何解释都会很有帮助。