Линуксийн жишээг хайчилж ав. Линуксийн командуудыг сурах: таслах

Жишээнүүдэд бид дараах файлыг ашиглах болно.

$ 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

Эдгээр талбарууд нь хоёр цэгээр тусгаарлагдсан дараах дарааллаар дараах мэдээллийг агуулна.

  1. Хэрэглэгчийн нэр
  2. Нууц үг (гэж харуулав xхэрэв шифрлэгдсэн бол)
  3. Хэрэглэгчийн ID дугаар (UID)
  4. Бүлгийн ID дугаар (GID)
  5. Тайлбарын талбар (хурууны командаар ашиглагддаг)

Хэрэглэгчийн нэр нь мөрний эхний талбар тул хэрэглэгчийн нэр бүрийг систем дээр харуулахын тулд дараах тушаалыг ашиглана уу.

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- Тогтмол илэрхийлэлтэй тохирох текстийг шүүх.
наах- Файлын харгалзах мөрүүдийг нэгтгэх.



Танд нийтлэл таалагдсан уу? Найзуудтайгаа хуваалцаарай!