How to check if string is a comment?
本问题已经有最佳答案,请猛点这里访问。
如何检查字符串是否以""开头?
1 | #path /var/dumpfolder |
我尝试了
1 | awk -F '' '{print $1}' |
有更好的方法吗?
我仍然不明白你想做什么,但是你的标签中有bash,所以这里有一个针对EDOCX1的bash解决方案(10)。
1 | string='#path /var/dumpfolder' |
1 2 3 4 5 | if [[ $string == \#* ]]; then echo 'yes' else echo 'no' fi |
或:
1 2 3 4 5 | if [[ ${string:0:1} == '#' ]]; then echo 'yes' else echo 'no' fi |
如果要删除
1 | echo"${string#\#}" # prints 'path /var/dumpfolder' |
这将删除
如果有时有前导空格,则使用regexp:
1 2 3 4 5 | if [[ $string =~ ^[[:space:]]*\#.*$ ]]; then echo"${string#*\#}" else echo"$string" fi |
1 | ^\s*[#](.*)$ |
在Debuggex上编辑实时
这是一个正则表达式…..如果这就是你要找的。
^ 表示字符串的开头\s* 是指多出一个空间来处理可能在#[#] 或只是# 工作,这检查第一个字母是#(.*) 抓取所有(大部分)字符并将它们放入捕获组。$ 停在字符串的末尾
这样可以删除代码中的和注释前面的空格。
1 | sed 's/\^\s*[#](.*)$/\1/' |
I basically want to check if string is commented if so, I want to
remove that comment '#' from string and keep it. Yes a message or
storing string without the comment.
所以
1 | sed 's/^\s*#*//' |
示例(带文件):
1 2 3 4 5 6 7 8 9 10 11 | kent$ cat f #c1 #c2 foo bar kent$ sed 's/^\s*#*//' f c1 c2 foo bar |
如果您只想在文件中找到
1 | grep -E '^#?path' file |
为了准确地找到
1 | grep -E '^#path' file |
更常见的是添加一个空格,但分隔符也可以是一个制表符:
1 | grep -E '^#path ' file |
使用
1 | awk '{sub(/^#/,"")}1' file |