我有一个像这样的文件hoge.txt:
case $1 in
[ $input = "q" ] && exit
if [ -s $filename ]
if [ ! -f $1 -o -f $2 ]
echo $list
rm -f ${BKDIR}
BKDIR=/${HOME}/backup
我想找到所有字母变量,排除所有参数,如" $ 1"并输出到这样的新文件:
$input
$filename
$list
我现在能做的最好的事情是
cat hoge.txt | awk '{for(i=1;i<=NF;i++){ if($i=="$/[a-zA-Z]/"){print $i} } }'
但它并没有返回任何结果。
答案 0 :(得分:1)
您不需要使用Awk
这样一个简单的例子,只需使用-E
标志使用扩展正则表达式支持,并使用-o
grep -Eo '\$[a-zA-Z]+' file
生成
$input
$filename
$list
使用重定向(>
)运算符
grep -Eo '\$[a-zA-Z]+' file > variablesList
(或)保存两个关键笔划(在下面的评论中建议)并启用不区分大小写的标记-i
grep -iEo '\$[a-z]+' file