file.txt 包含:
##w##
##wew##
使用 mac 10.6,bash shell,命令:
cat file.txt | grep [[:alpha:]]* -o
什么都不输出。我正在尝试提取井号内的文本。我究竟做错了什么?
(请注意,在这种情况下,最好将文件名作为参数传递给 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
。
sed 's/#//g' file.txt
/SCRIPTS [31]> cat file.txt
##w##
##wew##
/SCRIPTS [32]> sed 's/#//g' file.txt
w
wew
如果你有 bash >3.1
while read -r line
do
case "$line" in
*"#"* )
if [[ $line =~ "^#+(.*)##+$" ]];then
echo ${BASH_REMATCH[1]}
fi
esac
done <"file"