0

file.txt 包含:

##w##

##wew##

使用 mac 10.6,bash shell,命令:

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

什么都不输出。我正在尝试提取井号内的文本。我究竟做错了什么?

4

3 回答 3

3

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

你用什么shell来执行这个命令?我怀疑您的问题是外壳程序将星号解释为通配符并尝试 glob 文件。

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

我注意到这适用于我的 Linux 机器上的 grep 版本,但我的 Mac 上的 grep 需要 command grep -E '[[:alpha:]]+' -o file.txt

于 2010-03-12T05:06:11.103 回答
1
sed 's/#//g' file.txt

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

/SCRIPTS [32]>  sed 's/#//g' file.txt
w
wew
于 2010-03-12T05:10:17.667 回答
0

如果你有 bash >3.1

while read -r line
do
  case "$line" in
   *"#"* )
        if [[ $line =~ "^#+(.*)##+$" ]];then
            echo ${BASH_REMATCH[1]}
        fi
  esac    
done <"file"
于 2010-03-12T06:25:07.373 回答