مساعدة مع GREP [[: alpha:]] *
سؤال
يحتوي file.txt على:
##w##
##wew##
باستخدام Mac 10.6، Shell Bash، الأمر:
cat file.txt | grep [[:alpha:]]* -o
نواتج لا شيء. أحاول استخراج النص داخل علامات التجزئة. ما الخطأ الذي افعله؟
المحلول
(لاحظ أنه من الأفضل ممارسة في هذه الحالة لتمرير اسم الملف كوسيطة ل GREP بدلا من الأنابيب إخراج القط إلى GREP: grep PATTERN file
بدلا من cat file | grep PATTERN
.)
ما قذيفة تستخدمها لتنفيذ هذا الأمر؟ أظن أن مشكلتك هي أن Shell تفسر علامة النجمة كحاولة البدل ومحاولة ملفات الأرض.
حاول نقلا عن النمط الخاص بك، على سبيل المثال grep '[[:alpha:]]*' -o file.txt
.
لقد لاحظت أن هذا يعمل بشكل جيد مع إصدار GREP الذي يحتوي على جهاز Linux الخاص بي، ولكن GREP على My Mac يتطلب الأمر 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
إذا كان لديك باش> 3.1
while read -r line
do
case "$line" in
*"#"* )
if [[ $line =~ "^#+(.*)##+$" ]];then
echo ${BASH_REMATCH[1]}
fi
esac
done <"file"
لا تنتمي إلى StackOverflow