如何检查字符串是否以 '#' 开头?
#path /var/dumpfolder
我试过 awk
awk -F '' '{print $1}'
有没有更好的方法?
我仍然无法理解您要做什么,但是您的标签中有bash,所以这里有一个 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'
#
如果存在,这将删除字符。如果它不存在,则字符串将保持不变。
如果有时有前导空格,则使用正则表达式:
if [[ $string =~ ^[[:space:]]*\#.*$ ]]; then
echo "${string#*\#}"
else
echo "$string"
fi
^\s*[#](.*)$
这是一个正则表达式......如果这就是你要找的。
^
表示字符串的开始\s*
表示多一个空格来处理 # 前面可能有空格的情况[#]
或者只是#
检查第一个字母是#(.*)
抓住所有(大部分)角色并将它们扔到一个捕获组中$
停在字符串的末尾这应该可以删除代码中的 # 和注释前面的空格
sed 's/\^\s*[#](.*)$/\1/'
我基本上想检查是否对字符串进行了评论,如果有的话,我想从字符串中删除该评论“#”并保留它。是的,没有评论的消息或存储字符串。
所以
sed 's/^\s*#*//'
示例(带文件):
kent$ cat f
#c1
#c2
foo
bar
kent$ sed 's/^\s*#*//' f
c1
c2
foo
bar
如果您只想在文件中查找#path
或path
(不带#)模式,请执行以下操作:
grep -E '^#?path' file
要#path
准确查找,请不要添加?
:
grep -E '^#path' file
更明确的是添加一个空格,但您的分隔符也可以是一个制表符:
grep -E '^#path ' file
使用awk
awk '{sub(/^#/,"")}1' file