ใช่. คุณสามารถทำ w / tr
ในสถาน ASCII (ซึ่งเป็นสำหรับ GNUtr
แล้วชนิดของขอบเขตเท่านั้น) คุณสามารถใช้คลาส POSIX หรือคุณสามารถอ้างอิงค่าไบต์ของอักขระแต่ละตัวด้วยหมายเลขฐานแปด คุณสามารถแยกการแปลงข้ามช่วงได้เช่นกัน
LC_ALL=C tr '[:upper:]\0-\101\133-140\173-\377' '[:lower:][\n*]' <input
คำสั่งดังกล่าวจะแปลงอักขระตัวพิมพ์ใหญ่ทั้งหมดให้เป็นตัวพิมพ์เล็กละเว้นอักขระตัวพิมพ์เล็กทั้งหมดและแปลงอักขระอื่นทั้งหมดเป็นบรรทัดใหม่ แน่นอนว่าคุณต้องจบด้วยบรรทัดว่างเปล่าจำนวนหนึ่ง tr
-s
ซ้ำ queeze สลับอาจเป็นประโยชน์ในกรณีที่ว่า แต่ถ้าคุณใช้มันควบคู่ไปกับ[:upper:]
การ[:lower:]
เปลี่ยนแปลงแล้วคุณลมขึ้นบีบตัวพิมพ์ใหญ่ตัวละครได้เป็นอย่างดี ด้วยวิธีนี้มันยังต้องใช้ตัวกรองที่สองเช่น ...
LC... tr ... | tr -s \\n
...หรือ...
LC... tr ... | grep .
... และดังนั้นมันจึงสะดวกสบายกว่าการทำ ...
LC_ALL=C tr -sc '[:alpha:]' \\n <input | tr '[:upper:]' '[:lower:]'
... ซึ่งบีบการ-c
ใช้อักขระตัวอักษรตามลำดับในการขึ้นบรรทัดใหม่หนึ่งชิ้นจากนั้นทำการแปลงด้านบนและล่างในอีกด้านหนึ่งของท่อ
ไม่ได้หมายความว่าช่วงของลักษณะนั้นจะไม่มีประโยชน์ สิ่งที่ชอบ:
tr '\0-\377' '[1*25][2*25][3*25][4*25][5*25][6*25][7*25][8*25][9*25][0*]' </dev/random
... สามารถทำได้ค่อนข้างดีเพราะมันแปลงไบต์อินพุตเป็นตัวเลขทั้งหมดผ่านสเปกตรัมการแพร่กระจายของค่าของพวกเขา ไม่ต้องเสียไม่อยากรู้
dd
วิธีการทำแปลงอาจเกี่ยวข้องอีก
tr '\0-\377' '[A*64][B*64][C*64][D*64]' </dev/urandom |
dd bs=32 cbs=8 conv=unblock,lcase count=1
dadbbdbd
ddaaddab
ddbadbaa
bdbdcadd
เนื่องจากdd
สามารถทำทั้งสองอย่างunblock
และlcase
แปลงในเวลาเดียวกันมันอาจเป็นไปได้ที่จะผ่านงานส่วนใหญ่ออกไป แต่นั่นจะมีประโยชน์จริง ๆ ถ้าคุณสามารถทำนายจำนวนไบต์ต่อคำได้อย่างถูกต้องหรืออย่างน้อยสามารถคั่นแต่ละคำด้วยช่องว่างไว้ล่วงหน้าเพื่อนับจำนวนไบต์ที่คาดเดาได้เพราะunblock
กินช่องว่างท้ายท้ายแต่ละบล็อก