如何检查字符串是否以“#”开头?
#path /var/dumpfolder
我试过awk
awk -F '' '{print $1}'
还有更好的方法吗?
答案 0 :(得分:2)
^\s*[#](.*)$
这是一个正则表达式.....如果这就是你要找的东西。
^
表示字符串的开头\s*
意味着需要另外一个空间来处理#[#]
或#
只会检查第一个字母是#(.*)
抓取所有(大多数)角色并将其投入捕获组$
在字符串这应该可以删除代码中的#和注释前面的空格
sed 's/\^\s*[#](.*)$/\1/'
答案 1 :(得分:2)
我仍然无法理解你想要做什么,但你的标签中有bash,所以这里是check if string starts with '#'
string='#path /var/dumpfolder'
的
if [[ $string == \#* ]]; then
echo 'yes'
else
echo 'no'
fi
或:
if [[ ${string:0:1} == '#' ]]; then
echo 'yes'
else
echo 'no'
fi
如果您要删除#
字符,请使用:
echo "${string#\#}" # prints 'path /var/dumpfolder'
这将删除#
字符(如果存在)。如果它不存在,则字符串将保持不变。
如果有时候有前导空格,请使用regexp:
if [[ $string =~ ^[[:space:]]*\#.*$ ]]; then
echo "${string#*\#}"
else
echo "$string"
fi
答案 2 :(得分:1)
如果您只想在文件中找到#path
或path
(不带#)模式,请执行以下操作:
grep -E '^#?path' file
要完全找到#path
,请不要添加?
:
grep -E '^#path' file
更明显的是添加空格,但您的分隔符也可以是标签:
grep -E '^#path ' file
答案 3 :(得分:1)
我基本上想检查字符串是否被评论,如果是这样,我想 从字符串中删除该注释'#'并保留它。是的消息或 存储没有评论的字符串。
所以
sed 's/^\s*#*//'
示例(带文件):
kent$ cat f
#c1
#c2
foo
bar
kent$ sed 's/^\s*#*//' f
c1
c2
foo
bar
答案 4 :(得分:0)
使用awk
awk '{sub(/^#/,"")}1' file