Жишээнүүдэд бид дараах файлыг ашиглах болно.
$ cat test.txt файл руу чиглэсэн үйлдлүүдэд зориулсан cat команд. cp файл эсвэл санг хуулах команд. ls команд нь файл, сангуудыг шинж чанаруудтай нь жагсаах.
1. Тэмдэгтээр багануудыг сонгох
Тодорхой багана авахын тулд -c сонголтыг ашиглана уу. Дараах жишээнд бид мөр бүрт 2-р тэмдэгтийг (2-р багана) авна.
$ cut -c2 test.txt a p s
2. Утгын мужтай тэмдэгтээр багануудыг сонгох
Эхлэх ба төгсгөлийн байрлалыг "-" тэмдгээр зааж өгснөөр олон тооны тэмдэгтүүдийг авч болно.
Дараах жишээнд бид мөр бүрийн эхнийхээс гурав дахь тэмдэгтүүдийг тодруулах болно.
$ cut -c1-3 test.txt cat cp ls
3. Эхлэл эсвэл төгсгөлийн байрлалыг ашиглан багануудыг сонгох
Эхлэх эсвэл төгсгөлийн байрлалыг -c сонголтыг ашиглан тодорхойлж болно.
Дараах жишээнд бид зөвхөн "-" тэмдгийн өмнө сонголтоо эхлүүлэх эхлэлийн баганыг зааж өгсөн болно. Бид 3-аас эхлэн бүх дүрүүдийг авах болно:
$ cut -c3- test.txt t файл руу чиглэсэн үйлдлүүдийн команд.
файл эсвэл лавлах хуулах тушаал.
файлууд болон сангуудыг шинж чанаруудтай нь жагсаах команд.
Дараах жишээнд бид зөвхөн эхний 8 тэмдэгтийг авах болно.
$ cut -c-8 test.txt cat comm cp таслал ls таслал
4. Заасан талбаруудыг сонгох
Тэмдэгтийн тоог зааж өгөхийн оронд -d ба -f сонголтуудыг ашиглан талбаруудыг бүхэлд нь сонгож болно. -f сонголт нь олж авах талбаруудыг, -d сонголт нь талбаруудыг салгах тусгаарлагчийг зааж өгдөг.
Дараах жишээнд бид “ : ” (хос цэг) хязгаарлагчийг ашиглан /etc/passwd файлын зөвхөн эхний талбарыг харуулах болно:
$ cut -d":" -f1 /etc/passwd root demon bin sys синхрончлолын тоглоомууд
5. Төрөл бүрийн талбаруудаас дээж авах
Та мөн олон талбар сонгох боломжтой. Доорх жишээнд бүрхүүлийг /bin/bash гэж тохируулсан хэрэглэгчдийн хэрэглэгчийн нэр болон гэрийн лавлахыг харуулна. $ grep "/bin/bash" /etc/passwd | cut -d":" -f1,6 root:/root bala:/home/balaХэд хэдэн талбарыг харуулахын тулд эхний болон тоог зааж өгнө
сүүлчийн талбар
, доорх жишээн дээрх шиг. Доор бид 1-ээс 4, 6, 7 хүртэлх талбаруудыг сонгоно.
Манай жишээн дээр /etc/passwd, хэрэв та ":"-ээс өөр тусгаарлагчийг зааж өгвөл бүх мөрийг авах болно.
Дараах жишээнд бид хоолойг (" | ") зааглагч болгон зааж өгсөн бөгөөд ийм хязгаарлагч олдохгүй байсан ч гэсэн таслах хэрэгсэл нь мөрийг бүхэлд нь харуулах болно.
$ grep "/bin/bash" /etc/passwd | cut -d"|" -f1 root:x:0:0:root:/root:/bin/bash bala:x:1000:1000:bala,:/home/bala:/bin/bash
Гэхдээ зөвхөн хязгаарлагчийг агуулсан мөрүүдийг -s сонголтыг ашиглан шүүж болно.
Дараах жишээнд юу ч харагдахгүй, учир нь -s нь " | агуулаагүй мөрүүдийг шүүнэ ":
$ grep "/bin/bash" /etc/passwd | cut -d"|" -s -f1
7. Заасан талбараас бусад бүх талбарыг сонгох
Сонголтыг зааснаас өөр талбараар ашиглахын тулд --complement сонголтыг ашиглана уу.
Дараах жишээнд та 7-р талбараас бусад бүх талбарыг сонгоно.
$ grep "/bin/bash" /etc/passwd | cut -d":" --complement -s -f7 root:x:0:0:root:/root bala:x:1000:1000:bala,:/home/bala
8. Үр дүнгийн дэлгэц дээрх тусгаарлагчийг өөрчлөх
Анхдагч байдлаар, үр дүнгийн тусгаарлагч нь сонгох явцад ашигласантай ижил байх болно.
Хязгаарлагчийг өөрчлөхийн тулд --output-delimiter сонголтыг ашиглана уу.
Доорх жишээнд бид ":" тусгаарлагчийг "#"-ээр солих болно.
$ grep "/bin/bash" /etc/passwd | cut -d":" -s -f1,6,7 --output-delimiter="#" root#/root#/bin/bash bala#/home/bala#/bin/bash
9. Хязгаарлагчийг шинэ мөрийн тэмдэгтээр солино
Дараах жишээ нь зүссэн гаралтын талбар бүрийг шинэ мөрөнд хэвлэх болно. Бид мөн --output-delimiter сонголтыг ашигладаг боловч "n" параметрийг өгнө үү:
$ grep bala /etc/passwd | cut -d":" -f1,6,7 --output-delimiter=$"n" bala /home/bala /bin/bash
10. Cut хэрэгслийг бусад Unix хэрэгслүүдтэй хослуулах
stdout-ийг боловсруулахад бусад хэрэгслүүдтэй хамт ашиглах үед cut хэрэгслийн бүх боломжууд илчлэгдэж болно.
Дараах жишээнд бид зөвхөн хамгийн ихийг харуулах болно шаардлагатай мэдээлэл ps хэрэгслийн гаралтаас:
$ ps axu | grep python | sed "s/s+/ /g" | cut -d" " -f2,11- 2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video 2311 /usr/bin/python /usr/lib/unity-scope-video -remote/unity-scope-video-remote 2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon 2463 /usr/bin/python /usr/lib/system-service/system-service-d 3274 grep --color=auto python
Зохиогч: Rares Aioanei
Хэвлэгдсэн огноо: 2012 оны 1-р сарын 5
Орчуулга: А.Кривошей
Орчуулга хэвлэгдсэн огноо: 2012 оны 11 сарын 2
1. Танилцуулга
Хэрэв та cut командыг ашиглахгүйгээр Линуксыг удирдаж чадна гэж бодож байгаа бол таны зөв байна. Гэсэн хэдий ч, энэхүү маш энгийн командын мөрийн хэрэгслийг эзэмшсэнээр танд тодорхой давуу талуудыг өгөх болно, учир нь энэ нь таныг ажилдаа илүү үр дүнтэй болгох боломжийг олгоно. Энгийнээр хэлбэл, cut нь Линукс үйлдлийн системээс санал болгож буй олон текст шүүх хэрэгслийн нэг юм. Энэ нь STDIN-ийг өөр команд эсвэл файлаас шүүж, шүүсэн гаралтыг STDOUT руу илгээдэг.
2. Байнга хэрэглэгддэг сонголтууд
Олон зүйл нуршилгүйгээр шууд гол зүйл рүүгээ орж, хамгийн түгээмэл хэрэглэгддэг командын мөрийн сонголтуудыг судалцгаая.
-b, --байт=ЖАГСААЛТ
жагсаалтын дагуу файлаас зөвхөн заасан байтыг сонгоно
-c, --тэмдэгт = ЖАГСААЛТ
файлаас сонгоно уу өгөгдсөн дүрүүджагсаалтын дагуу
-f, --талбарууд = ЖАГСААЛТ
зөвхөн жагсаалтад орсон талбаруудыг сонгоно. Өгөгдмөл хязгаарлагч нь TAB юм. Анхдагч утгыг -d сонголтыг ашиглан дарж болно.
-d, --delimiter=DELIMITER
Талбар тусгаарлагчийг тохируулах боломжийг танд олгоно. Дээр дурдсанчлан анхдагч нь TAB боловч энэ сонголт нь үүнийг хүчингүй болгох боломжийг танд олгоно.
3. Жагсаалтыг ашиглах
Энэ тохиолдолд жагсаалт нь нэг буюу олон байт, тэмдэгт эсвэл талбараас бүрдэж болно. Жишээлбэл, зөвхөн хоёр дахь байтыг гаргахын тулд жагсаалтад оруулна ганц бие 2.
Тийм учраас:
2 - эхнийхээс эхлэн тоолоход зөвхөн хоёр дахь байт, тэмдэгт эсвэл талбар гарна.
2-5 - хоёроос тавдугаар хүртэлх бүх байт, тэмдэгт, талбарууд гарч ирнэ.
-3 - дөрөв дэх хүртэлх бүх байт, тэмдэгт, талбарууд гарна.
5- - таваас эхлэн бүх байт, тэмдэгт эсвэл талбарууд гарна.
1,3,6 - зөвхөн эхний, гурав, зургаа дахь байт, тэмдэгтүүд эсвэл талбарууд гарна.
1,3- - гурав дахьээс эхлэн эхний болон бүх байт, тэмдэгт эсвэл талбарууд гарч ирнэ.
4. Тэмдэгтээр түүвэрлэх
Доорх жишээнүүд өөрсдөө ярьдаг. Бид cut.txt файлаас зөвхөн заасан тэмдэгтүүдийг гаргахын тулд -c сонголтыг ашигласан.
Echo cut-command > cut.txt $ cut -c 2 cut.txt u $ cut -c -3 cut.txt cut $ cut -c 2-5 cut.txt ut-c $ cut -c 5- cut.txt команд
5. Байтаар түүвэрлэх
-b хувилбарын ажиллах зарчим (байтаар) нь тэмдэгтүүдтэй ажиллах дээр дурдсантай төстэй юм. Нэг тэмдэгт нь 1 байт хэмжээтэй гэдгийг бид мэдэж байгаа тул командыг -b сонголтоор ажиллуулсны үр дүн ижил байх болно.
$ cut -b 2 cut.txt u $ cut -b -3 cut.txt таслах $ cut -b 2-5 cut.txt ut-c $ cut -b 5- cut.txt команд
cut.txt нь энгийн ASCII текст файл юм. UTF-8 Юникод гэх мэт олон байт кодчилолуудыг ашиглах үед л ялгаа нь мэдэгдэхүйц байх болно. Жишээ нь:
$ echo Lubos > cut.txt $ файл cut.txt cut.txt: UTF-8 Юникод текст $ cut -b 1-3 cut.txt Lu $ cut -c 1-3 cut.txt Lub
6. Талбараар сонгох
Өмнө дурьдсанчлан, cut командын ашигладаг анхдагч талбар нь TAB юм. Жишээлбэл, нийтлэг хязгаарлагч нь TAB байх файл үүсгэцгээе.
Зөвлөмж: Хэрэв та тушаалын мөрөнд TAB хэрхэн оруулахаа мэдэхгүй байгаа бол TAB товчийг дарахаас өмнө CTRL + V товчлуурыг ашиглана уу.
$ echo "1 2 3" > cut.txt $ echo "4 5 6" >> cut.txt $ cat cut.txt 1 2 3 4 5 6 $ cut -f2- cut.txt 2 3 5 6
Дээрх жишээнд TAB нь нийтлэг хязгаарлагч бөгөөд cut командыг үндсэн талбар болгон ашигладаг тул зөвхөн хоёр, гурав дахь багануудыг хэвлэсэн. Та od тушаалыг ашиглан хоосон зайны оронд TAB ашигласан эсэхээ шалгаж болно:
$ echo "1 2" > tab.txt $ echo "1 2" > space.txt $ od -a tab.txt 0000000 1 ht 2 nl 0000004 $ od -a space.txt 0000000 1 sp sp sp sp sp sp sp sp sp sp 2 nl 0000013
Хэрэв та өөр хязгаарлагч ашиглахын тулд тушаалын үйлдлийг хүчингүй болгох шаардлагатай бол -d сонголтыг ашиглах боломжтой.
$ echo 1-2-3-4 > cut.txt $ echo 5-6-7-8 >> cut.txt $ cat cut.txt 1-2-3-4 5-6-7-8 $ cut -d - -f-2,4 cut.txt 1-2-4 5-6-8
Сонгодог жишээ бол бид /etc/passwd файлаас одоогийн систем дээрх хэрэглэгчдийн жагсаалтыг гаргаж авахын тулд -d сонголтыг ашиглах хэрэгтэй.
$ cut -d: -f 1 /etc/passwd root demon bin sys sync games man lp mail news uucp proxy www-data ...
Тогтвортой гаралтыг олж авахын тулд нийтлэг хязгаарлагч нь оролтын мөр бүр дээр тогтмол байх ёстой гэдгийг тэмдэглэх нь зүйтэй. Жишээлбэл, дараах жишээнд орон зайг нийтлэг хязгаарлагч болгон ашиглахад хэцүү байх болно.
$ cat cut.txt cut команд w команд awk команд wc команд $ cut -d " " -f2 cut.txt команд
Энэ тохиолдолд awk эсвэл sed командыг ашиглан эхлээд олон зайг таслал гэх мэт нэг зааглагчаар солих нь хамаагүй хялбар байх болно.
$ sed "s/\s\+/,/" cut.txt | cut -d , -f2 командын командын командын тушаал $ awk "( хэвлэх $2; )" cut.txt командын командын команд
7. Complement ашигласан өгөгдлийг оруулахгүй
Таслах команд нь гаралтад хүссэн өгөгдлийг сонгон оруулах боломжийг олгодог. Хэрэв та гаралтаас хасах өгөгдлийг сонгох шаардлагатай бол нэмэлт сонголт нь маш хэрэгтэй.
Жишээ:
$ echo 12345678 > cut.txt $ cat cut.txt 12345678 $ cut --complement -c -2,4,6- cut.txt 35
8. Жишээ
Тушаалын синтакс | Тодорхойлолт |
UNIX дахь cut команд нь файлын мөр бүрээс хэсгүүдийг хайчилж, үр дүнг стандарт гаралт руу бичих команд юм. Энэ нь шугамын хэсгийг таслахад ашиглаж болно байт байрлал, тэмдэгт, талбар. Үндсэндээ таслах команд нь мөрийг зүсэж, текстийг задалдаг. Командын тусламжтайгаар сонголтыг зааж өгөх шаардлагатай, эс тэгвээс алдаа гарна. Хэрэв нэгээс олон файлын нэр өгсөн бол файл бүрийн өгөгдөл байна өмнө бишфайлын нэрээр.
тайрах СОНГОЛТ......Нэртэй хоёр файлыг авч үзье state.txtболон capital.txtЭнэтхэгийн муж, нийслэлүүдийн 5 нэрийг тус тус агуулдаг.
$ cat state.txt
Ямар ч сонголтыг заагаагүй бол алдаа гарна.
$ cut state.txtтаслах: та байт, тэмдэгт эсвэл талбарын жагсаалтыг зааж өгөх ёстой "cut --help"-ийг ашиглан дэлгэрэнгүй мэдээлэл авна уу.Сонголтууд болон ir Жишээ бүхий тайлбар:
1. -b(байт):Тодорхой байтыг задлахын тулд та таслалаар тусгаарлагдсан байт тоонуудын жагсаалтыг -b сонголтыг дагах хэрэгтэй. Байтын хүрээг зураас(-) ашиглан зааж өгч болно. Байтын тоонуудын жагсаалтыг зааж өгөх шаардлагатай, эс тэгвээс алдаа гарна. Таб болон буцах зай 1 байт тэмдэгт гэж үздэг.
Хүрээгүй жагсаалт $ cut -b 1,2,3 state.txtТэгээд Ару Асс Бих Чх Муж бүхий жагсаалт $ cut -b 1-3,5-7 state.txtАндра Аруач Ассм Бихр ЧхттиЭнэ нь мөрийн эхнээс төгсгөл хүртэл байт сонгох тусгай хэлбэрийг ашигладаг:
Үүнд 1- мөрийн 1-р байтаас төгсгөлийн байт хүртэл заана $ cut -b 1- state.txtАндхра Прадеш Аруначал Прадеш Ассам Бихар Чхаттисгарх Үүнд -3 нь мөрийн 1-р байтаас 3-р байт хүртэлхийг заана. $ cut -b -3 state.txtТэгээд Ару Асс Бих Чх
2. -c (багана):Тэмдэгтээр таслахын тулд -c сонголтыг ашиглана уу. Энэ нь -c сонголтонд өгөгдсөн тэмдэгтүүдийг сонгоно. Энэ нь таслалаар тусгаарлагдсан тоонуудын жагсаалт эсвэл зураас(-)-ээр тусгаарлагдсан тооны муж байж болно. Таб болон буцах зайдүр гэж үздэг. Тэмдэгтийн дугаарын жагсаалтыг зааж өгөх шаардлагатай, эс тэгвээс энэ сонголтод алдаа гарна.
$cut -c [(k)-(n)/(k),(n)/(n)] файлын нэрЭнд, кдүрийн эхлэлийн байрлалыг илэрхийлдэг ба nмөр бүр дэх тэмдэгтийн төгсгөлийн байрлалыг заана, хэрэв кболон n"-"-ээр тусгаарлагдана, эс тэгвээс тэдгээр нь зөвхөн байна байр суурьОролт болгон авсан файлын мөр бүрийн тэмдэгт.
$ cut -c 2,5,7 state.txt nr rah sm ir htiДээрээс хасах команд нь файлын мөр бүрээс хоёр, тав, долоо дахь тэмдэгтийг хэвлэнэ.
$ cut -c 1-7 state.txtАндра Арунач Ассам Бихар ЧхаттиДээрээс хасах команд нь файлын мөр бүрийн эхний долоон тэмдэгтийг хэвлэнэ.
Cut нь мөрийн эхнээс төгсгөл хүртэл тэмдэгт сонгох тусгай хэлбэрийг ашигладаг.
$ cut -c 1- state.txtАндхра Прадеш Аруначал Прадеш Ассам Бихар Чхаттисгарх Дээрх командын эхний тэмдэгтээс төгсгөл хүртэл хэвлэнэ. Энд командын зөвхөн эхлэх байрлалыг зааж өгөх ба төгсгөлийн байрлалыг орхигдуулсан байна. $cut -c -5 state.txt Andhr Aruna Assam Bihar Chhat Дээрх тушаал нь эхлэх байрлалыг тав дахь тэмдэгт хүртэл хэвлэнэ. Энд эхлэх байрлалыг орхигдуулж, төгсгөлийн байрлалыг зааж өгсөн болно.3. -f (талбар): -втохируулга нь тогтмол урттай шугаманд хэрэгтэй. Ихэнх unix файлуудад тогтмол урттай мөр байдаггүй. Хэрэгтэй мэдээллийг задлахын тулд багана биш талбараар нь хасах хэрэгтэй. Заасан талбаруудын жагсаалтыг таслалаар тусгаарлах ёстой. Хүрээг -f сонголтоор тайлбарлаагүй. зүсэхашигладаг табөгөгдмөл талбар хязгаарлагч боловч ашиглан бусад хязгаарлагчтай ажиллах боломжтой -дсонголт.
Жич: UNIX-д зайг хязгаарлагч гэж үздэггүй.
$cut -d "хязгаарлагч" -f (талбайн дугаар) файл.txt
Файлд байгаа шиг state.txtталбаруудыг зайгаар тусгаарлавал -d сонголтыг ашиглаагүй бол бүх мөрийг хэвлэнэ:
$ cut -f 1 төлөв.txtАндхра Прадеш Аруначал Прадеш Ассам Бихар ЧхаттисгархХэрэв -d сонголтыг ашигласан бол энэ нь орон зайг талбар тусгаарлагч эсвэл хязгаарлагч гэж үзнэ.
$ cut -d " " -f 1 state.txtАндра Аруначал Ассам Бихар Чхаттисгарх команд нь файлын мөр бүрийн эхний хэсгээс дөрөв хүртэлх хэсгийг хэвлэдэг. Тушаал:$ cut -d " " -f 1-4 state.txt Гаралт:Андхра Прадеш Аруначал Прадеш Ассам Бихар Чхаттисгарх4. – нөхөх:Нэрнээс нь харахад энэ нь гаралтыг нөхдөг. Энэ сонголтыг бусад сонголтуудтай хослуулан ашиглаж болно -fэсвэл хамт -в.
$ cut --complement -d " " -f 1 state.txtПрадеш Прадеш Ассам Бихар Чхаттисгарх $ cut --complement -c 5 state.txtАндха Прадеш Арунчал Прадеш Асса Биха Чхатисгарх5. – гаралт-хязгаарлагч:Анхдагч байдлаар гаралтын хязгаарлагч нь бидний зүсэлтэнд заасан оролтын хязгаарлагчтай ижил байна -дсонголт. Гаралтын хязгаарлагчийг өөрчлөхийн тулд сонголтыг ашиглана уу –output-delimiter=”хязгаарлагч”.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Андра%Прадеш Аруначал%Прадеш Ассам Бихар ЧхаттисгархЭндээс хасах команд нь -f сонголтыг ашиглан заасан талбаруудын хоорондох стандарт гаралтын хязгаарлагчийг (%) өөрчилдөг.
6. -хувилбар:Энэ сонголт нь таны систем дээр ажиллаж байгаа зүсэлтийн хувилбарыг харуулахад ашиглагддаг.
$cut --version cut (GNU coreutils) 8.26 Савласан Cygwin (8.26-2) Зохиогчийн эрх (C) 2016 Free Software Foundation, Inc. GPLv3+ лиценз: GNU GPL 3 буюу түүнээс хойшхи хувилбар. Энэ бол үнэгүй програм хангамж: та үүнийг өөрчилж, дахин түгээх боломжтой. Хуульд заасан хэмжээгээр БАТАЛГААТ өгөгддөггүй. Дэвид М.Ихнат, Дэвид Маккензи, Жим Майеринг нар бичсэн.Таслах командын хэрэглээ
1. Хоолойтой сүүлийг хэрхэн ашиглах вэ(|):Зүсэх командыг unix-ийн бусад олон командуудтай холбож болно. Дараах жишээнд гаралт мууркомандыг оролт болгон өгдөг зүсэхкоманд -f state.txt файлаас ирсэн муж улсын нэрийг урвуу дарааллаар эрэмбэлэх сонголт.
$ cat state.txt | таслах -d " " -f 1 | ангилах -rЧхаттисгарх Бихар Ассам Аруначал АндраМөн нэмэлт боловсруулалт хийхийн тулд нэг буюу хэд хэдэн шүүлтүүрээр хоолойгоор дамжуулж болно. Дараах жишээн дээрх шиг бид cat, head and cut командыг ашиглаж байгаа бөгөөд гаралт нь list.txt файлын нэрэнд удирдамж(>) ашиглан хадгалагддаг.
$ cat state.txt | толгой -n 3 | cut -d " " -f 1 > list.txt $ cat list.txtАндхра Аруначал АссамБаярлалаа Салони ГуптаИлүү олон жишээ өгөхийн тулд.
Таслах команд нь файлын мөр бүрээс хүссэн хэсгийг сонгож (бүх мөрөнд ижил дүрмийг ашиглан) дэлгэцийн дэлгэц дээр сонголтыг харуулах боломжийг олгодог.
Энэ тушаал нь гурван үндсэн сонголттой:
- -б- сонгох объект нь байт байх үед;
- - Хамт- сонгох объект нь тэмдэг байх үед;
- -f- сонгох объект нь текст форматлах элементүүд (багана, багана гэх мэт) байх үед.
Хамгийн ойлгомжтой тэмдэгтүүдээс эхэлцгээе (сонголт -c)
Сонголт -c
Жишээлбэл, /etc/shells файлыг бүхэлд нь авч үзье, энэ нь дараах байдалтай байна: /bin/bash /bin/tcsh /bin/csh /bin/ash /bin/ksh /bin/zshОдоо тушаалыг ашиглая:
$ cut -c 1.5 /etc/shells // // // // // //
Энэ жишээн дээр -c сонголт нь тэмдэгт байх болно гэсэн үг, 1.5 нь бид 1 ба 5 тэмдэгтүүдийг (1-ээс тоолох) сонгох бөгөөд файлын бусад бүх агуулгыг үл тоомсорлодог.
Та тэмдэгтүүдийг серийн дугаараар биш, харин мужаар сонгож болно:
$ cut -c 1-5 /гэх мэт/бүрхүүлүүд /бин/ /бин/ /бин/ /бин/ /бин/ /бин/
Энэ тохиолдолд бид 1-ээс 5 хүртэлх (хамааруулсан) тэмдэгтүүдийг сонгосон.
Та таслалаар тусгаарлагдсан олон мужийг зааж өгч болно:
~$ cut -c 1-5,8-9 /гм/бүрхүүлүүд /бин/ш /бин/ш /бин/ч /бин/ч /бин/ч /бин/ч
Эхний гурван жишээ нь зөвхөн үзүүлэх зорилготой бөгөөд практик утгагүй. Дараах жишээ нь зарим нэг утга учиртай байж болох юм.
$ cut -c 6- /etc/shells bash tcsh csh ash ksh zsh
Энд бид системд байгаа бүрхүүлүүдийн жагсаалтыг хүлээн авлаа. Үүнийг хийхийн тулд бид заасан тэмдэгтээс мөрний төгсгөл хүртэл мөрийн агуулгыг бүхэлд нь гаргах тушаалыг албаддаг мужын баруун хил хязгаарыг заагаагүй болно. Та зүүн талд зураас үлдээж болно, дараа нь сонголт нь мөрийн эхнээс заасан тэмдэгт хүртэл явагдана.
Эдгээр бүх жишээнүүд орос тэмдэгтүүдтэй үргэлж ажилладаггүй нь сонирхолтой юм (дор хаяж UTF-8 кодчилолд) - тэд алхам алхмаар хачирхалтай хэвлэлтийг гаргадаг:
$ cut -c 1- rus.txt ytsukengshschzkh fyvaproldzheyo yachsmithby.yoyo
Энэ бол rus.txt файлын бүрэн текст юм. Хөтөлбөр зөв ажилласан.
$ cut -c 1-5 rus.txt yts?
өө?
дарвуулт завь?
доллар Эндээс л хачирхалтай зүйл болсон. Дараагийн тушаалын мөр хүртэл шатаар буусан нь инээдтэй юм. Гэхдээ Ctrl+Alt+F2 дарж дуудагдсан "жинхэнэ" консол дээр ижил командын гаралт бага эсвэл бага харагдаж байв.$ cut -c 1-5 rus.txt yts fy yach
Олон тооны туршилтуудаас харахад UTF-8 кодчилол дахь кирилл үсэг нь хоёр байтаас бүрддэг тул та давхар тоон утгыг оруулах хэрэгтэй. Жишээлбэл, хэрэв та өмнөх командын 5-ыг 6-аар сольсон бол (эсвэл бусад
тэгш тоо ), дараа нь бүх зүйл консол эмулятор дээр байх ёстой шиг байх болно:$ бууруулах -c 1-6 rus.txt ytsu fyv дарвуулт онгоц
Туршилтын цэвэр байдлын үүднээс би анхдагчаар koi-8 кодчилолтой Knoppix5.1-ийг эхлүүлсэн тул ямар ч ялгаа байхгүй.
Англи хэл дээрх текст
ажиглагдаагүй - үсэг бүрийг нэг байтаар илэрхийлнэ:
$ cut -c 1-5 rus.txt yitsuke fywap yachsmi
Тиймээс та үндэсний кодчилолдоо болгоомжтой хандах хэрэгтэй!-c сонголт бүрэн тодорхой байгаа гэж найдаж байна, та дараагийнх руу шилжиж болно.
Сонголт -b Ихэнх тохиолдолд нэг байт нь нэг тэмдэгтийг тодорхойлдог тул энэ нь байт түүврийг тодорхойлох арга болон үр дүнгийн хувьд өмнөх сонголттой маш төстэй юм.$ cut -b 1-6 /etc/shells /bin/b /bin/t /bin/c /bin/a /bin/k /bin/z
Бид /etc/shells файлын мөр бүрээс эхний 6 байтыг сонгосон.
Яг л -c сонголттой адил та аргуудыг ашиглаж болно
Qwer tyui op asdf ghjk llll zxcv bnm, ....
Мөн энд тушаал байна:
$ cut -f 1,2 tab.txt qwer tyui asdf ghjk zxcv bnm,
Бүх зүйл хүлээгдэж буй шиг, эхний хоёр баганыг сонгосон. Өөр нэг жишээ:
$ cut -f 2- tab.txt tyui op ghjk llll bnm, ....
Ерөнхийдөө энэ нь ойлгомжтой, схем нь ижил, зөвхөн баганатай. Асуулт өөр байна - тэдгээрийг боловсруулахын тулд табаар тусгаарлагдсан баганууд бүхий ийм файлуудыг хаанаас авах вэ?
Аз болоход, -f сонголттой хамт ажиллахад зориулагдсан -d сонголт байдаг бөгөөд табын тэмдэгтүүдээс бусад текстийн хязгаарлагчийг ойлгодог. /etc лавлах нь бүх төрлийн хязгаарлагчаар тусгаарлагдсан өгөгдлийн багана агуулсан файлуудаар дүүрэн байна; Цорын ганц асуудал бол жишээнүүдийн хувьд нэлээд урт байдаг. Би /etc/group файлаас эхний арван мөрийг аваад group10.txt файл үүсгэнэ.
$ cut -f 1- -d: group10.txt root::0:root bin::1:root,bin,daemon demon::2:root,bin,daemon sys::3:root,bin,adm adm: :4:root,adm,daemon tty::5: disk:!:6:root,adm,haldaemon,ya,alex lp::7:lp,ya,alex mem::8: kmem::9:
Энэ жишээн дээр -f сонголт нь эхнийхээс сүүлчийнх хүртэлх бүх баганыг сонгохыг хэлдэг бөгөөд -d сонголт нь -d хязгаарлагч тэмдэгтийг зааж өгдөг: зааглагч нь хоёр цэг юм. Дэлгэцийн дээр group10.txt файл бүхэлдээ байна.
$ cut -f 1,3 -d: group10.txt root:0 bin:1 demon:2 sys:3 adm:4 tty:5 disk:6 lp:7 mem:8 kmem:9
Одоо бид эхний болон гурав дахь баганыг сонгосон, өөрөөр хэлбэл бүлэг бүрийн таних дугаарыг олж мэдсэн. Үгүй бол объектыг сонгох дүрэм нь бусад сонголттой адил байна. Мэдээжийн хэрэг, баганын хязгаарлагч нь хоёр цэгээс өөр тэмдэгт байж болно. Тэдгээрийг -d сонголтыг ашиглан зааж өгөх ёстой<символ>. Мөн -d сонголтыг ашиглах илүү харааны арга бий. Саяхан тайлбарласан барилгын оронд (-d<символ>) --delim= гэж бичнэ<символ>, энэ нь орон зайг ашиглахаас илүү найдвартай мэт санагдаж байна.
-s ба -n гэсэн хоёр сонголт үлдсэн
-s сонголтыг -f сонголттой хамт ашигладаг бөгөөд хязгаарлагч тэмдэгт агуулаагүй мөрүүдийг харуулахгүй байхыг хэлдэг. Энэ нь надад хүртэл ойлгомжтой.
Үлдсэн тодорхойгүй байдал
-n сонголт миний хувьд танигдаагүй хэвээр үлдсэн. Энэ нь олон байт тэмдэгтүүдтэй юу ч хийхгүй, ялангуяа тэдгээрийг хуваахгүй байхыг хэлдэг. Би эдгээр тэмдэгтүүд юу болохыг мэдэхгүй байна, яг л анхдагчаар cut команд нь тэдэнтэй юу хийхийг мэдэхгүй байна. Өөр нэг нууц бий. Хэрэв зай бол тусгаарлагчийг хэрхэн зааж өгөх вэ? Эсвэл хоёр, гурван зай уу? Миний бүх туршилт үр дүнгүй болсон. Магадгүй хэн нэгэн мэдэх болов уу? Надад бичээрэй, миний хаяг нийтлэлийн эхэнд байна.Анхаар:-c, -b, -f сонголтуудыг зөвхөн дангаар нь ашиглаж болно.
--help болон --version сонголтууд нь сайн мэдэгдэж байгаа тул би эдгээрийн талаар ярихгүй.
Таслах хөтөлбөрийн хураангуй
Хөтөлбөр нь хэрэглэгдэх боломжтой бөгөөд ердийн файлуудтай, өөрөөр хэлбэл мэдээллийн тодорхой бүтэц нь мөрөөс мөрөнд (бүх төрлийн жагсаалт, хяналтын хуудас, хэвлэх гэх мэт) давтагддаг файлуудтай үр дүнтэй ажилладаг. Үүнийг мөр болгон хуваахгүй энгийн бичвэрт хэрхэн ашиглаж болохыг төсөөлөхөд бэрх. Түүврийг тодорхойлох гурван арга (байт, тэмдэгт, багана) байх нь бараг ямар ч тохиолдолд амжилтанд хүрэх боломжийг олгодог. Тус тушаал нь програмын хоолойн нэг хэсэг болох шүүлтүүрийн хувьд ялангуяа ашигтай байж болно.Шинэчлэгдсэн: 10/17/2017 Компьютерийн найдвар
Таслах тухай
синтаксийг таслах
зүсэх СОНГОЛТ... [ФАЙЛ]...Сонголтууд
-б, --байт =ЖАГСААЛТ | Зөвхөн байтыг сонгоно уу ЖАГСААЛТ. ЖАГСААЛТбайт, байтын багц эсвэл байтын мужийг зааж өгдөг; доороос үзнэ үү. |
-в, --тэмдэгт =ЖАГСААЛТ | -д заасан мөр бүрээс зөвхөн тэмдэгтүүдийг сонгоно уу ЖАГСААЛТ. ЖАГСААЛТтэмдэгт, тэмдэгтийн багц эсвэл тэмдэгтийн мужийг зааж өгдөг; доороос үзнэ үү. |
-д, --хязгаарлагч =ДЭЛИМ | тэмдэгт ашиглах ДЭЛИМталбар хязгаарлагчийн табын оронд . |
-f, --талбарууд =ЖАГСААЛТ | мөр бүр дээр зөвхөн эдгээр талбаруудыг сонгох; мөн хязгаарлагч тэмдэгт агуулаагүй дурын мөрийг хэвлэхээс бусад тохиолдолд -sсонголтыг тодорхойлсон. ЖАГСААЛТталбар, талбарын багц эсвэл талбарын мужийг зааж өгдөг; доороос үзнэ үү. |
-n | Энэ сонголтыг үл тоомсорлодог боловч нийцтэй байдлын үүднээс оруулсан болно. |
- нэмэлт | сонгосон байт, тэмдэгт эсвэл талбарын багцыг нөхөх. |
-s, --зөвхөн-хязгаарлагдсан | Хязгаарлагч агуулаагүй мөрийг бүү хэвлэ. |
--output-delimiter=STRING | ашиглах STRINGгаралтын хязгаарлагч мөр болгон . Анхдагч нь оролтын хязгаарлагчийг ашиглах явдал юм. |
--туслаарай | Тусламжийн мессежийг үзүүлж, гарна уу. |
--хувилбар | хувилбарын мэдээллийг гаргаж, гарах. |
Хэрэглээний тэмдэглэл
Дуудлага хийх үед зүсэх, ашиглана уу -б, -в, эсвэл -fсонголт, гэхдээ тэдгээрийн зөвхөн нэг нь.
Үгүй бол ФАЙЛтодорхойлсон байна, зүсэхстандарт оролтоос уншина.
Тодорхойлж байна ЖАГСААЛТ
Тус бүр ЖАГСААЛТнь бүхэл тоо, бүхэл тооны муж эсвэл таслалаар тусгаарлагдсан олон бүхэл тооны мужаас бүрдэнэ. Сонгосон оролтыг уншсан дарааллаар нь бичиж, гаралтад яг нэг удаа бичнэ. Хүрээ нь дараахь зүйлээс бүрдэнэ.
Н | нь Н-аас тоологдсон байт, тэмдэгт эсвэл талбар 1 . |
Н - | -аас Нбайт, тэмдэгт эсвэл талбарыг мөрийн төгсгөлд оруулна. |
Н- М | -аас Н th хүртэл Мбайт, тэмдэгт эсвэл талбар (хамааруулсан). |
- М | эхнийхээс эхлээд Мбайт, тэмдэгт эсвэл талбар. |
Жишээлбэл, танд нэртэй файл байна гэж бодъё data.txtдараах текстийг агуулна.
Нэг хоёр гурав дөрөв таван альфа бета гамма дельта эпсилон
Энэ жишээнд эдгээр үг бүрийг хоосон зайгаар бус таб тэмдэгтээр тусгаарласан болно. Таб тэмдэг нь өгөгдмөл хязгаарлагч юм зүсэх, тиймээс энэ нь анхдагчаар талбарыг табаар тусгаарлагдсан бүх зүйл гэж үзэх болно.
Мөр бүрийн зөвхөн гурав дахь талбарыг "тайрах" тулд дараах тушаалыг ашиглана уу.
Cut -f 3 data.txt
Гурван гамма
Хэрэв та мөр бүрийн зөвхөн хоёроос дөрөв дэх талбарыг "тайрах" бол дараах тушаалыг ашиглана уу:
Cut -f 2-4 data.txt
Дараахыг гаргана:
Хоёр гурван дөрвөн бета гамма дельта
Хэрэв та мөр бүрийн эхний секунд ба дөрөв дэх тав дахь талбарыг "тайрах" бол (гурав дахь талбарыг орхигдуулсан) дараах тушаалыг ашиглана уу:
Cut -f 1-2,4-5 data.txt
Дараахыг гаргана:
Нэг хоёр дөрөв таван альфа бета дельта эпсилон
Эсвэл та эхний хоёр талбарыг орхигдуулахгүйгээр гурав дахь талбар болон түүний араас бүх талбарыг авахыг хүсч байна гэж бодъё. Энэ тохиолдолд та дараах тушаалыг ашиглаж болно:
Cut -f 3- data.txt
Дараахыг гаргана:
Гурав дөрөв таван гамма дельта эпсилон
-ээр мужийг зааж байна ЖАГСААЛТ-д мөн хамаарна зүсэхдүрүүд ( -в) эсвэл байт ( -б) шугамаас. Жишээ нь, мөр бүрийн гурав, арван хоёр дахь тэмдэгтийг л гаргах data.txt, тушаалыг ашиглана уу:
Cut -c 3-12 data.txt
Дараахыг гаргана:
E хоёр гурван фа бета г
Үг бүрийн хоорондох "зай" нь үнэндээ нэг табын тэмдэгт тул гаралтын хоёр мөрөнд найман үсэг, тоон тэмдэгт, хоёр таб тэмдэгт арван тэмдэгт байгааг санаарай. Өөрөөр хэлбэл, зүсэхмөр бүрийн эхний хоёр тэмдэгтийг орхиж, табыг тус бүр нэг тэмдэгт болгон тоолж байна; гурваас арван хоёр тэмдэгтийг гаргах, табуудыг тус бүр нэг тэмдэгт болгон тоолох; мөн арванхоёрны дараах тэмдэгтүүдийг орхих.
Тэмдэгтүүдийн оронд байт тоолох нь энэ тохиолдолд ижил гаралтыг гаргах болно, учир нь ASCII кодлогдсон текст файлд тэмдэгт бүр нэг байт (найман бит) өгөгдлөөр дүрслэгддэг. Тиймээс тушаал:
Cut -b 3-12 data.txt
Вилл, бидний файлын төлөө data.txt, яг ижил гаралтыг гаргана:
E хоёр гурван фа бета г
Табаас өөр хязгаарлагчийг зааж өгч байна
Таб тэмдэг нь анхдагч хязгаарлагч юм зүсэхталбарыг юу бүрдүүлж байгааг тодорхойлоход ашигладаг. Тиймээс, хэрэв таны файлын талбарууд аль хэдийн табаар тусгаарлагдсан бол та өөр хязгаарлагч тэмдэгт оруулах шаардлагагүй болно.
Гэхдээ та ямар ч тэмдэгтийг хязгаарлагч болгон зааж өгч болно. Жишээлбэл, файл /etc/passwdдээрх хэрэглэгч бүрийн талаарх мэдээллийг агуулна систем, нэг мөрөнд нэг хэрэглэгч байх ба мэдээллийн талбар бүр хоёр цэгээр тусгаарлагдсан байна (" : "). Жишээ нь, -ийн мөр /etc/passwdтөлөө үндэсхэрэглэгч дараах байдлаар харагдаж болно.
Root:x:0:0:root:/root:/bin/bash
Эдгээр талбарууд нь хоёр цэгээр тусгаарлагдсан дараах дарааллаар дараах мэдээллийг агуулна.
- Хэрэглэгчийн нэр
- Нууц үг (гэж харуулав xхэрэв шифрлэгдсэн бол)
- Хэрэглэгчийн ID дугаар (UID)
- Бүлгийн ID дугаар (GID)
- Тайлбарын талбар (хурууны командаар ашиглагддаг)
Хэрэглэгчийн нэр нь мөрний эхний талбар тул хэрэглэгчийн нэр бүрийг систем дээр харуулахын тулд дараах тушаалыг ашиглана уу.
Cut -f 1 -d ":" /etc/passwd
Аль нь гаргана, жишээлбэл:
Root demon bin sys chope
(Ердийн систем дээр өөр олон хэрэглэгчийн бүртгэл байдаг бөгөөд үүнд системийн үйлчилгээнд зориулагдсан олон бүртгэл байдаг, гэхдээ энэ жишээний хувьд бид зөвхөн таван хэрэглэгчтэй дүр эсгэх болно.)
Мөр бүрийн гурав дахь талбар /etc/passwdфайл нь UID (хэрэглэгчийн ID дугаар) тул хэрэглэгчийн нэр болон хэрэглэгчийн ID дугаар бүрийг харуулахын тулд дараах тушаалыг ашиглана уу:
Cut -f 1,3 -d ":" /etc/passwd
Энэ нь дараахь зүйлийг гаргах болно, жишээлбэл:
Root:0 demon:1 bin:2 sys:3 chope:1000
Таны харж байгаагаар гаралт нь анхдагчаар оролтод заасан ижил хязгаарлагч тэмдэгтийг ашиглан тусгаарлагдах болно. Энэ тохиолдолд хоёр цэгийн тэмдэгт (" : "). Та оролт, гаралтын хувьд өөр хязгаарлагчийг зааж өгч болно. Тиймээс, хэрэв та өмнөх командыг ажиллуулахыг хүсч байгаа боловч гаралтыг хоосон зайгаар тусгаарлахыг хүсвэл дараах тушаалыг ашиглаж болно:
Cut -f 1,3 -d ":" --output-delimiter=" " /etc/passwd root 0 дэмон 1 бин 2 sys 3 chope 1000
Гэхдээ гаралтыг табаар тусгаарлахыг хүсвэл яах вэ? Тушаалын мөрөнд таб тэмдэгтийг зааж өгөх нь хэвлэх боломжгүй тэмдэгт тул арай илүү төвөгтэй байдаг. Үүнийг командын мөрөнд зааж өгөхийн тулд та бүрхүүлээс "хамгаалах" ёстой. Энэ нь таны аль бүрхүүлийг ашиглаж байгаагаас хамааран өөр өөрөөр хийгддэг боловч Linux-ийн үндсэн бүрхүүлд (bash) таб тэмдэгтийг зааж өгч болно. $"\t". Тиймээс тушаал:
Cut -f 1,3 -d ":" --output-delimiter=$"\t" /etc/passwd
Жишээ нь дараахь зүйлийг гаргана.
Root 0 demon 1 bin 2 sys 3 chope 1000
тайрах жишээ
cut -c 3 файл.txtФайлын мөр бүрийн гурав дахь тэмдэгтийг гарга file.txtбусдыг орхих.
Cut -c 1-3 file.txt
Файлын мөр бүрийн эхний гурван тэмдэгтийг гарга file.txtүлдсэнийг нь орхих.
Cut -c -3 file.txt
Дээрх тушаалтай адил. -ийн мөр бүрийн эхний гурван тэмдэгтийг гарга file.txt.
Cut -c 3- file.txt
Файлын мөр бүрийн гурав дахь тэмдэгтээс сүүлчийн тэмдэгтийг гарга file.txtэхний хоёр тэмдэгтийг орхисон.
Cut -d ":" -f 1 /etc/passwd
Файлын эхний талбарыг гарга /etc/passwd, талбарууд нь хоёр цэгээр тусгаарлагдсан байдаг (" : "). Эхний талбар /etc/passwdхэрэглэгчийн нэр тул энэ тушаал нь хэрэглэгчийн нэр бүрийг гаргана passwdфайл.
Grep "/bin/bash" /etc/passwd | cut -d ":" -f 1.6
Дурын оруулгын эхний болон зургаа дахь талбарыг хоёр цэгээр тусгаарлана /etc/passwdтодорхойлсон файл /bin/bashнэвтрэх бүрхүүлийн хувьд. Энэ тушаал нь нэвтрэх бүрхүүлтэй аливаа хэрэглэгчийн хэрэглэгчийн нэр болон гэрийн лавлахыг гаргах болно /bin/bash.
Холбогдох тушаалууд
grep- Тогтмол илэрхийлэлтэй тохирох текстийг шүүх.
наах- Файлын харгалзах мөрүүдийг нэгтгэх.