帮助 grep [[:alpha:]]* -o

发布于 2024-08-24 11:28:01 字数 193 浏览 4 评论 0原文

file.txt 包含:

##w##

##wew##

使用 mac 10.6、bash shell,命令:

cat file.txt | grep [[:alpha:]]* -o

不输出任何内容。我正在尝试提取哈希符号内的文本。我做错了什么?

file.txt contains:

##w##

##wew##

using mac 10.6, bash shell, the command:

cat file.txt | grep [[:alpha:]]* -o

outputs nothing. I'm trying to extract the text inside the hash signs. What am i doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奶茶白久 2024-08-31 11:28:01

(请注意,在这种情况下,最好将文件名作为参数传递给 grep,而不是通过管道将 cat 的输出传递给 grep: grep PATTERN file 而不是 cat file | grep PATTERN< /code>.)

您使用什么 shell 来执行此命令?我怀疑您的问题是 shell 将星号解释为通配符并尝试 glob 文件。

尝试引用您的模式,例如 grep '[[:alpha:]]*' -o file.txt

我注意到这与我的 Linux 计算机上的 grep 版本配合得很好,但我的 Mac 上的 grep 需要命令 grep -E '[[:alpha:]]+' -o file.txt< /代码>。

(Note that it is better practice in this instance to pass the filename as an argument to grep instead of piping the output of cat to grep: grep PATTERN file instead of cat file | grep PATTERN.)

What shell are you using to execute this command? I suspect that your problem is that the shell is interpreting the asterisk as a wildcard and trying to glob files.

Try quoting your pattern, e.g. grep '[[:alpha:]]*' -o file.txt.

I've noticed that this works fine with the version of grep that's on my Linux machine, but the grep on my Mac requires the command grep -E '[[:alpha:]]+' -o file.txt.

微凉徒眸意 2024-08-31 11:28:01
sed 's/#//g' file.txt

/SCRIPTS [31]> cat file.txt
##w##
##wew##

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew
sed 's/#//g' file.txt

/SCRIPTS [31]> cat file.txt
##w##
##wew##

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew
泛泛之交 2024-08-31 11:28:01

如果你的 bash >3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"

if you have bash >3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文