ฉันมีในสคริปต์ที่ครอบคลุมหนึ่งซับนี้:
grep -P -o "(?s)description\".+>" ./Hlinks.html \
| grep -P -o "(?s)ISBN[^:]{0,1}: {0,1}[-0-9X]+[ \|]*" \
| perl -p -e "s/ISBN[^:]*:*|[\|| ]//g"
| sed -n "/.*/p;1q" > ./nISBN.txt
ตอนนี้ฉันต้องการรับเอาท์พุทเริ่มต้น (fe "NA") เมื่อหนึ่งซับออกไม่มีอะไร ฉันจะทำให้หนึ่งซับของฉันสมบูรณ์ขึ้นเพื่อรับความปรารถนานี้ได้อย่างไร
ขอบคุณมาก
วอลเตอร์
@ AFH ขอบคุณ แต่ตอนนี้ฉันมีสิ่งนี้: มันใช้งานไม่ได้ฉันใช้มันถูกต้องหรือไม่?
—
Walter Schrabmair
cat $1 | grep -P -o "(?s)ISBN[^:]{0,1}: {0,1}[-0-9X]+[ \|]*" | perl -p -e "s/ISBN[^:]*:*|[\|| ]//g" | sed -n "/.*/p;1q" > ./nISBN.txt; [ -s ./nISBN.txt ] || echo N.A. > ./nISBN.txt
ฉันลืมที่จะพูดว่า: ไฟล์. /nISBN.txt อยู่ที่นั่นเสมอ (ISBN แบบเก่าเป็นงานเก่า)
ดูเหมือนว่าจะถูกต้องแม้ว่าสคริปต์ต้นฉบับจะไม่เหมือนกับคำถามของคุณ ไม่ว่าจะ
—
AFH
./nISBN.txt
มีอยู่ก่อนหน้านี้หรือไม่ก็ไม่สำคัญ - มันจะถูกเขียนทับเสมอ ไม่ทำงานอะไร ไฟล์ว่างเปล่าไม่ถูกเขียนทับด้วยN.A.
หรือไม่? หรือไฟล์ถูกเขียนทับเสมอไม่ว่าจะว่างเปล่าหรือไม่?
ฉันได้ทำการดัดแปลงเพื่อการทดสอบ (เพื่อให้ฉันสามารถใส่อักขระคอนโซล) ฉันได้รับไฟล์. / nISBN.txt ที่ว่างด้วย 0 ไบต์บน dir ไม่มี NA ในนั้นหากฉันป้อนไม่มีคำหลัก ISBN
—
วอลเตอร์ Schrabmair
ที่นี่ฉันได้ทำกับผู้แก้ไขที่ถูกต้องแล้ว:
—
Walter Schrabmair
cat $1 | grep -P -o "(?s)ISBN[^:]{0,4}: {0,1}[-0-9X]+[ \|]*" | perl -p -e "s/ISBN[^:]*:*|[\|| ]//g" | sed -n "/.*/p;1q" > ./nISBN.txt; [ -s ./nISBN.txt ] || echo N.A. > ./nISBN.txt
และฉันป้อน fe ISBN-13: 23232 ฉันได้รับ 23232 ในไฟล์: แต่เมื่อฉันป้อน INNNN: 34343 ฉันจะได้ไฟล์ที่ว่างเปล่า แต่ฉันต้องการได้รับในกรณีนี้: NA
; [ -s ./nISBN.txt ] || echo N.A. >./nISBN.txt
คำตอบที่ราคาถูกและร่าเริงคือการผนวก