ฉันมีล็อกไฟล์จำนวนมากบนกล่อง linux ฉันต้องล้างข้อมูลที่มีความละเอียดอ่อนก่อนส่งให้บุคคลที่สาม ฉันได้ใช้สคริปต์ด้านล่างในครั้งก่อนหน้าเพื่อทำงานนี้และทำงานได้ยอดเยี่ยม (สคริปต์ถูกสร้างขึ้นด้วยความช่วยเหลือจากที่นี่ :-)):
#!/bin/bash
help_text () {
cat <<EOF
Usage: $0 [log_directory] [client_name(s)]
EOF
exit 0
}
CMDLINE=""$0" "$@""
if [ -z "$1" ]; then
help_text
else
pattern=""
delim=""
n=1
counter=`find "$1" -name *.gz |sort |wc -l`
BAKIFS=$IFS
IFS=$(echo -en "\n\b")
exec 3<&0
exec 0<"$2"
while read -r line
do
pattern=$pattern$delim$line
delim="|"
done
exec 0<&3
IFS=$BAKIFS
while [ $n -lt $counter ]
do
for i in `find "$1" -name *.gz |sort`
do
gunzip "$i"
i_unzip=$(echo "$i" |sed 's/\.[^\.]*$//')
sed -ri "s/$pattern/CLIENT/g" "$i_unzip"
gzip "$i_unzip"
done
n=n+1
done
fi
exit 0
อย่างไรก็ตามตอนนี้หนึ่งในแผนกของเราได้ส่ง CLIENT_FILE.txt ให้ฉันด้วย 425000+ ตัวแปร! ฉันคิดว่าฉันอาจถึงขีด จำกัด ภายในแล้ว! หากใครมีความคิดเกี่ยวกับวิธีการจัดการกับตัวแปรมากมายนี้ฉันขอขอบคุณจริงๆ
ฉันได้ลองแยกไฟล์ไคลเอนต์ออกเป็น 4 โดยมีตัวแปรประมาณ 100,000 รายการในแต่ละตัว แต่ก็ยังใช้งานไม่ได้ ฉันเกลียดที่จะแยกกันอยู่เรื่อย ๆ เพราะฉันมี 20 ไดเรกทอรีที่มีมากถึง 190 ไฟล์ในแต่ละไดเรกทอรีเพื่อให้ทำงานได้ ยิ่งฉันสร้างไฟล์ไคลเอนต์มากเท่าไหร่ก็ยิ่งผ่านมากเท่านั้น