wc հրամանի օրինակներ. Wc - Hey Linux Wiki: Ինչ է wc հրամանը Linux-ում

Ֆայլերի վերլուծությունը նրանց հետ աշխատելու անբաժանելի մասն է: Երբեմն անհրաժեշտ է դառնում հաշվել տեքստի տողերի կամ բառերի քանակը: Թիմը արդյունավետորեն հաղթահարում է այս խնդիրը wc Linux.

Կոմունալը լռելյայն տեղադրված է գրեթե բոլոր GNU/Linux բաշխումների վրա: Այս հոդվածում մենք կանդրադառնանք դրա գործառույթներին և գործնականում կիրառմանը:

Կոմունալ ծրագիրը գործարկելու համար բացեք տերմինալը և մուտքագրեք.

Տերմինալը կսպասի տվյալների մուտքագրմանը: Ստեղների համակցությունը սեղմելուց հետո Ctrl + Դհրամանի թարգմանիչը կդադարեցնի ծրագիրը և կտպագրի երեք թվեր, որոնք ցույց են տալիս մուտքագրված տողերի, բառերի և բայթերի քանակը:

Կոմունալը կարող է մշակել ֆայլերը: Ստանդարտ հրահանգները հետևյալն են.

  • wc- կոմունալ անուն;
  • ֆայլ- մշակվող ֆայլի անվանումը:

Ծրագիրը կարող է նաև ընդունել անհատական ​​արժեքների վերլուծության պարամետրեր: Առավել օգտագործվածները ներկայացված են ստորև բերված աղյուսակում.

Օբյեկտը պետք է հասկանալ որպես ստանդարտ մուտքային հոսքի վրա ստացված ֆայլ կամ տվյալ:

Հրամանը կարող է մշակել բազմաթիվ ֆայլեր, եթե դրանք առանձնացնեք բացատով կամ ընտրեք դրանք՝ օգտագործելով օրինակ:

Օգտագործելով wc հրամանը

Ստանդարտ մուտքագրման մշակում և ավարտում Ctrl + Դ:

Ըստ վերլուծության՝ մուտքագրվել է 5 բառ պարունակող 4 տող՝ 35 բայթ ծավալով։

Վերահղեք ելքային հոսքը մուտքագրման wc:

Բոլոր ֆայլերը մշակվում են ընդլայնմամբ ընթացիկ գրացուցակում.

Վերջում ցուցադրվում է ամփոփագիր, որն ամփոփում է յուրաքանչյուր սյունակի արժեքները:

Մենք կցուցադրենք միայն երկու ֆայլերի նիշերի և տողերի քանակը.

Խնդրում ենք նկատի ունենալ. պարամետրերի նշված հերթականությունը չի ազդում տեղեկատվության վերջնական տեսքի վրա: Ծրագիրը միշտ տվյալների ելք է տալիս ձևով ԳԾԵՐ - ԲԱՌԵՐ - ԲԱՅՏ (Նիշեր) [- ՖԱՅԼ]. Եթե ​​պարամետրը բացակայում է, նրա սյունակը պարզապես անտեսվելու է՝ առանց մյուսների վրա ազդելու: Նիշերի թիվը կլինի առաջինը, եթե հրամանը պարունակում է նաև ելքային բայթեր:

Եզրակացություն

Թիմ wc Linux-ը արդյունավետ գործիք է GNU/Linux-ում ֆայլերը վերլուծելու համար: Այն կարող է միաժամանակ մշակել ինչպես ստանդարտ մուտքային, այնպես էլ բազմաթիվ ֆայլեր: Հատուկ տվյալներ ստանալու համար օգտագործվում են հրամանի տողի ընտրանքները:

Առնչվող գրառումներ.



Հոդվածը տարածվում է Creative Commons ShareAlike 4.0 լիցենզիայի ներքո, երբ նյութը պատճենվում է, անհրաժեշտ է հղում աղբյուրին:

Այս հատվածում դուք կիմանաք շատ հետաքրքիր և օգտակար հրամաններ Linux-ում տեքստային տվյալների հետ աշխատելու մասին: Նաև ներառում է bash-ում I/O հոսքերի հետ աշխատելու հիմունքները:

Բառամշակում

Վերադարձ դեպի վերահղում

Ավելի վաղ այս ձեռնարկների շարքում մենք տեսանք > օպերատորի օգտագործման օրինակ՝ հրամանի ելքը ֆայլ վերահղելու համար, ինչպես ցույց է տրված ստորև.

$ echo «firstfile» > copyme

Ի հավելումն ֆայլի ելքը վերահղելու, մենք կարող ենք օգտվել այնպիսի հզոր կեղևի հնարավորությունից, ինչպիսին են խողովակները: Օգտագործելով խողովակները, մենք կարող ենք մի հրամանի ելքը փոխանցել մյուսի մուտքին: Դիտարկենք հետևյալ օրինակը.

$ echo «hi there» | wc
1 2 9
Խորհրդանիշ | օգտագործվում է ձախ կողմում գտնվող հրամանի ելքը միացնելու համար աջ կողմում գտնվող հրամանի մուտքագրմանը: Վերևի օրինակում echo հրամանը տպում է «hi there», որին հաջորդում է նոր տողի նիշը: Այս ելքը սովորաբար հայտնվում է տերմինալում, բայց խողովակը այն վերահղում է որպես մուտքագրում wc հրամանին, որը ցույց է տալիս տողերի, բառերի և նիշերի քանակը:

Օրինակ ալիքներով (խողովակներ)

Ահա ևս մեկ պարզ օրինակ.

$ լս -ս | տեսակավորել -n

Այս դեպքում, ls -s-ը սովորաբար տպում է ընթացիկ գրացուցակը տերմինալում՝ յուրաքանչյուր ֆայլից առաջ նշված չափերով: Այնուամենայնիվ, դրա փոխարեն մենք ելքը փոխանցում ենք տեսակավորման -n-ին, որը այն կդասավորի թվային եղանակով: Սա շատ հարմար է գրացուցակում առավելագույն տեղ գրավող ֆայլեր գտնելու համար:

Հետևյալ օրինակներն ավելի բարդ են և ցույց են տալիս այն ուժն ու հարմարավետությունը, որին կարելի է հասնել ալիքների միջոցով: Ստորև մենք կօգտագործենք հրամաններ, որոնք դեռ չեն լուսաբանվել, բայց շատ մի կենտրոնացեք դրանց վրա: Փոխարենը, կենտրոնացեք հասկանալու վրա, թե ինչպես են աշխատում խողովակները և ինչպես կարող եք դրանք օգտագործել ձեր ամենօրյա Linux աշխատանքում:

Ապափաթեթավորում ալիքը

Ֆայլը unzip և ապասեղմելու համար կարող եք անել հետևյալը.

$ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar

Այս մեթոդի թերությունը սկավառակի վրա միջանկյալ, unzipped ֆայլի ստեղծումն է: Քանի որ tar-ը կարող է տվյալներ կարդալ անմիջապես իր մուտքագրումից (նշված ֆայլի փոխարեն), մենք կարող ենք ստանալ նույն վերջնական արդյունքը խողովակի միջոցով.

$ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -

Վա՜յ Սեղմված tarball-ը բացվեց, և մենք արեցինք առանց միջանկյալ ֆայլի:

Ավելի վավերական ալիք

Ահա խողովակի ևս մեկ օրինակ.

$ կատու myfile.txt | տեսակավորել | uniq | wc -l

Մենք օգտագործում ենք cat՝ myfile.txt-ի բովանդակությունը տեսակավորման հրամանին ուղարկելու համար: Երբ տեսակավորումը մուտքագրում է ստանում, այն տեսակավորում է տող առ տող այբբենական կարգով և այդպես ուղարկում է uniq ծրագիր: uniq-ը հեռացնում է կրկնօրինակ տողերը (ի դեպ, uniq-ը որպես մուտքագրում պահանջում է տեսակավորված ցուցակ) և արդյունքն ուղարկում է wc -l: Մենք ավելի վաղ նայեցինք wc հրամանին, բայց առանց դրա ընտրանքների: Երբ նշված է -l տարբերակը, հրամանը ցուցադրում է միայն տողերի քանակը և նիշերի քանակը այս դեպքում չի ցուցադրվում. Դուք կտեսնեք, որ նման խողովակը կտպագրի եզակի գծերի քանակը տեքստային ֆայլ.

Փորձեք ստեղծել մի քանի ֆայլ ձեր տեքստային խմբագրիչում: Օգտագործեք այս խողովակը նրանց վրա և նայեք ձեր ստացած արդյունքին:

Բառերի մշակման փոթորիկը սկսվում է:

Այժմ մենք կանցնենք արագ ստուգման Linux հրամաններստանդարտ բառերի մշակման համար: Քանի որ մենք հիմա շատ ծրագրեր ենք դիտելու, դրանցից յուրաքանչյուրի համար օրինակներ չենք ունենա: Փոխարենը, մենք ձեզ խրախուսում ենք կարդալ տրված հրամանների man էջերը (օրինակ՝ մուտքագրելով man echo) և սովորել յուրաքանչյուր հրամանն ու դրա տարբերակները՝ որոշ ժամանակ անցկացնելով դրանց հետ խաղալով։ Որպես կանոն, այս հրամանները տպում են վերամշակման արդյունքը տերմինալում, այլ ոչ թե ինքնին փոփոխելու ֆայլը: Այս արագ ակնարկից հետո մենք ավելի խորը կանդրադառնանք I/O վերահղմանը: Այսպիսով, այո, արդեն լույս կա թունելի վերջում: :)

արձագանքտպում է իր փաստարկները տերմինալում: Օգտագործեք -e տարբերակը, եթե ցանկանում եք ելքի մեջ ներառել փախուստի հաջորդականությունները; օրինակ echo -e «foo\nfoo»-ն կտպի foo-ն, այնուհետև գնալ նոր տող, այնուհետև նորից տպել foo: Օգտագործեք -n տարբերակը՝ կանխելու echo-ն ելքի վերջում նոր տող նիշ ավելացնելու համար, ինչպես դա անում է լռելյայն:

կատուտերմինալում տպելու է նշված ֆայլի բովանդակությունը: Հարմար է որպես խողովակի առաջին հրաման, օրինակ՝ cat foo.txt | բլա

տեսակավորելդուրս կբերի նշված ֆայլի բովանդակությունը հրամանի տող, այբուբենի կարգով. Բնականաբար, տեսակավորումը կարող է նաև մուտքագրել խողովակից: Մուտքագրեք man sort՝ տեսնելու հրամանների ընտրանքները, որոնք վերահսկում են տեսակավորման տարբերակները:

uniqվերցնում է արդեն տեսակավորված ֆայլ կամ տվյալների հոսք (խողովակի միջոցով) և հեռացնում կրկնօրինակ տողերը:

wcցույց է տալիս տողերի, բառերի և նիշերի քանակը նշված ֆայլում կամ մուտքագրման հոսքում (խողովակից): Մուտքագրեք man wc՝ սովորելու, թե ինչպես հարմարեցնել ծրագրի արդյունքը:

գլուխտպում է ֆայլի կամ հոսքի առաջին տասը տողերը: Օգտագործեք -n տարբերակը՝ նշելու, թե քանի տող պետք է ցուցադրվի:

պոչըտպում է ֆայլի կամ հոսքի վերջին տասը տողը: Օգտագործեք -n տարբերակը՝ նշելու, թե քանի տող պետք է ցուցադրվի:

tacնման կատու, բայց բոլոր տողերը տպում է հակառակ հերթականությամբ, այլ կերպ ասած՝ առաջինը տպվում է վերջին տողը։

ընդլայնելՓոխակերպում է մուտքային ներդիրի նիշերը բացատների: -t տարբերակը նշում է ներդիրի չափը:

չընդլայնվելՓոխակերպում է մուտքային տարածքները ներդիրի նիշերի: -t տարբերակը նշում է ներդիրի չափը:

կտրելօգտագործվում է մուտքային ֆայլից կամ հոսքից որոշակի նիշով առանձնացված դաշտեր հանելու համար: (փորձեք echo "abc def ghi jkl" | cut -d " " -f2,2 մոտավորապես)

Թիմ nlյուրաքանչյուր մուտքագրման տող ավելացնում է իր համարը: Հարմար է տպագրության համար։

պրֆայլը բաժանում է էջերի և համարակալում դրանք. սովորաբար օգտագործվում է տպագրության համար:

tr- խորհրդանիշ թարգմանության (փոխակերպման) գործիք; օգտագործվում է մուտքային հոսքի որոշակի նիշերը ելքային հոսքի նշված նիշերին քարտեզագրելու համար:

sed- հզոր թելի վրա հիմնված տեքստային խմբագիր: Դուք կարող եք ավելին իմանալ sed-ի մասին Funtoo կայքի հետևյալ ձեռնարկներից.
Եթե ​​մտադիր եք մասնակցել LPI քննությանը, անպայման կարդացեք այս շարքի առաջին երկու հոդվածները:

ավք- հմուտ լեզու տող առ տող վերլուծելու և մուտքային հոսքի մշակման համար՝ ըստ սահմանված օրինաչափությունների: Awk-ի մասին ավելին իմանալու համար կարդացեք Fuuntoo կայքում տեղադրված ձեռնարկների հետևյալ շարքը.
odնախագծված է ներկայացնելու մուտքային հոսքը օկտալ, տասնվեցական և այլն: ձևաչափը։

պառակտել- այս հրամանը օգտագործվում է բաժանելու համար մեծ ֆայլերմի քանի փոքր, ավելի կառավարելի մասերի:

fmtօգտագործվում է տեքստի երկար տողերը «փաթաթելու» համար: Այսօր դա այնքան էլ օգտակար չէ, քանի որ այս հատկությունը ներկառուցված է մեծամասնության մեջ տեքստային խմբագիրներ, չնայած թիմը բավական լավն է՝ իմանալու համար:

մածուկվերցնում է երկու կամ ավելի ֆայլեր որպես մուտքագրում, միացնում տող առ տող և դուրս բերում արդյունքը: Կարող է օգտակար լինել տեքստի աղյուսակներ կամ սյունակներ ստեղծելու համար:

միանալ Paste-ի նման, այս օգտակար ծրագիրը թույլ է տալիս համատեղել երկու ֆայլ՝ օգտագործելով ընդհանուր դաշտը (լռելյայն, յուրաքանչյուր տողում առաջին դաշտը):

թիտպում է մուտքային փաստարկները ֆայլի և էկրանի վրա միաժամանակ: Սա օգտակար է, երբ ցանկանում եք ինչ-որ բանի համար գրանցամատյան ստեղծել, ինչպես նաև ցանկանում եք գործընթացը տեսնել էկրանին:

Փոթորիկը ավարտվեց: Վերահղում

Ինչպես > հրամանի տողում, կարող եք օգտագործել< для перенаправления файла, но уже на вход команде. Для многих команд, можно просто указать имя файла. К сожалению некоторые программы работают только со стандартным потоком ввода.

Bash-ը և այլ պատյանները պաշտպանում են «herefile» հայեցակարգը: Սա թույլ է տալիս մուտքագրումը հրամանին տրվել որպես տողերի շարք, որին հաջորդում է հրամանը, որը ցույց է տալիս արժեքների մուտքագրման հաջորդականության ավարտը: Սա ցույց տալու ամենահեշտ ձևը օրինակով է.

$ տեսակավորել <խնձոր
լոռամրգի
բանան
ՎԵՐՋ

խնձոր
բանան
լոռամրգի

Վերևի օրինակում մենք մուտքագրում ենք խնձոր, լոռամրգի և բանան բառերը, որին հաջորդում է «ՎԵՐՋ»՝ մուտքագրման վերջը նշելու համար: Տեսակավորման ծրագիրը այնուհետև վերադարձնում է մեր բառերը այբբենական կարգով:

Օգտագործելով «>>»

Դուք կարող եք ակնկալել, որ >> ինչ-որ չափով նման կլինի<<, но это не так. Она позволяет просто добавить вывод в файл, а не перезаписывать его каждый раз, как это делает >. Օրինակ:

$ echo Hi > myfile
$ արձագանքել այնտեղ. > myfile
$ cat myfile
այնտեղ։

Վա՜յ։ Մենք կորցրինք «Hi»-ով հատվածը։ Ահա թե ինչ նկատի ունեինք.

$ echo Hi > myfile
$ արձագանքել այնտեղ. >> myfile
$ cat myfile
Ողջու՜յն
այնտեղ։

Դա ավելի լավ է!

Շնորհակալություն Դմիտրի Մինսկի ([էլփոստը պաշտպանված է]) թարգմանության համար։

Հեղինակների մասին

Դենիել Ռոբինս

Դենիել Ռոբինս - Gentoo համայնքի հիմնադիր և ստեղծող օպերացիոն համակարգ Gentoo Linux. Դանիելը բնակվում է Նյու Մեքսիկոյում՝ կնոջ՝ Մերիի և երկու եռանդուն դուստրերի հետ: Նա նաև Funtoo-ի հիմնադիրն ու գործադիր տնօրենն է, ինչպես նաև բազմաթիվ տեխնիկական հոդվածներ է գրել IBM developerWorks-ի, Intel Developer Services-ի և C/C++ Users Journal-ի համար:

Քրիս Հաուզեր

Քրիս Հաուզերը UNIX-ի փաստաբան է 1994 թվականից, երբ միացավ Թեյլորի համալսարանի (Ինդիանա, ԱՄՆ) վարչական թիմին, որտեղ նա բակալավրի կոչում ստացավ համակարգչային գիտության և մաթեմատիկայի ոլորտում: Այդ ժամանակվանից նա աշխատել է տարբեր ոլորտներում՝ ներառյալ վեբ հավելվածները, վիդեո խմբագրումը, UNIX դրայվերները և ծածկագրային անվտանգությունը: Ներկայումս աշխատում է Sentry Data Systems-ում: Քրիսը նաև իր ներդրումն է ունեցել բազմաթիվ անվճար նախագծերում, ինչպիսիք են Gentoo Linux-ը և Clojure-ը և համահեղինակել է The Joy of Clojure գիրքը:

Արոն Գրիֆիս

Ահարոն Գրիֆիսն ապրում է Բոստոնում, որտեղ նա անցկացրել է վերջին տասնամյակը՝ աշխատելով Hewlett-Packard-ում այնպիսի նախագծերի վրա, ինչպիսիք են UNIX ցանցի վարորդները Tru64-ի համար, Linux-ի անվտանգության սերտիֆիկացում, Xen և KVM վիրտուալացում, իսկ վերջերս՝ HP ePrint հարթակը: Երբ նա չի ծրագրավորում, Ահարոնը սիրում է մտածել ծրագրավորման խնդիրների մասին՝ հեծանիվ վարելիս, չղջիկներով ձեռնածություն անելիս կամ Բոստոն Ռեդ Սոքս պրոֆեսիոնալ բեյսբոլի թիմին քաջալերելիս:

Հարց 1. Բայց ինչու՞ ստացա 7, չպիտի՞ ստանամ: 6 «, հավատալով, որ նա համարում է խորհրդանիշը» տողի վերջ »?

Հարց 2. Ինչպե՞ս է աշխատում wc -m-ը:

Հարց 3. Երբ ես օգտագործում եմ wc -c (բայթերի քանակը հաշվելու համար), ես ունենում եմ նույն արդյունքը, ինչ wc -m , այնպես որ. որն է երկու տարբեր տարբերակների իմաստը? Նույն գործն են անում, չէ՞։ Եթե ​​ոչ, ապա ո՞րն է տարբերությունը և ինչպե՞ս է աշխատում wc -c-ն:

Դուք պետք է ունենաք ընդամենը 6 նիշ: Փորձեք վազել

Cat - Ֆայլի անուն

Ձեր ֆայլում չտպող նիշերը տեսնելու համար: Դուք պետք է ինչ-որ լրացուցիչ բան ունենաք: Եթե ​​ես ֆայլը դարձնեմ նույնը, ինչ քոնը, կարող եմ տեսնել

Տեղը դրե՞լ ես։ Սա կկազմի 7: ikk$ կամ միգուցե կունենա նոր տող.

որը նույնպես 7 է

Ինչպես ասում եք

հաշվում է կերպարներ և

հաշվում է բայթերը: Եթե ​​ձեր բոլոր նիշերը ASCII նիշերի հավաքածուի մաս են կազմում, ապա յուրաքանչյուր նիշի համար կլինի միայն 1 բայթ, այնպես որ դուք կստանաք նույն թիվը երկու հրամաններից:

Փորձեք ոչ ASCII նիշերով ֆայլ.

$ echo ك > testfile $ wc -m testfile 2 testfile $ wc -c testfile 3 testfile

Այո! Հիմա ավելի շատ բայթ կա, քան նիշ:

wc -c-ի և wc -m-ի տարբերությունն այն է, որ մի քանի բայթ նիշերով տեղանքում (օրինակ՝ UTF8), առաջինը հաշվում է բայթերը, իսկ երկրորդը՝ նիշերը։ Դիտարկենք հետևյալ ֆայլը.

$ hexdump -C dummy.txt 00000000 78 79 cf 80 0a |xy...|

(նրանց համար, ովքեր չեն խոսում UTF8, դա «x», «y» և «π» տառերն են, ապա նոր տող): Սա հինգ բայթ է.

$ wc -c dummy.txt 5 dummy.txt

բայց միայն չորս նիշ.

$ wc -m dummy.txt 4 dummy.txt

$ locale UTF-8

Իմ ներկայիս միջավայրում նիշերի հավաքածուն UTF-8 է, ինչը նշանակում է, որ նիշերը կոդավորված են 1-ից 4 բայթ յուրաքանչյուր նիշի համար (չնայած քանի որ սկզբնական UTF-8 սահմանումը թույլ էր տալիս նիշերի կոդավորումը մինչև 0x7ffffff, գործիքների մեծ մասը ճանաչում էր UTF-8 բայթային հաջորդականությունը մինչև 6 բայթ երկարությամբ):

Այս նիշերի հավաքածուում Յունիկոդի բոլոր նիշերը հասանելի են և կոդավորված են որպես բայթ արժեք 65, իսկ 乕 որպես 3 բայթ հաջորդականություն՝ 228,185,149, և é որպես երկու բայթ հաջորդականություն՝ 195,169, օրինակ:

$ printf 乕 | wc -mc 1 3 $ printf a | wc -mc 1 1

$ արտահանում fr_FR.iso885915@euro $ locale charmap ISO-8859-15

Ես փոխել եմ իմ միջավայրը, որտեղ նիշերի հավաքածուն այժմ ISO-8859-15 է (այլ բաներ, ինչպիսիք են լեզուն, արժույթի նշանը, ամսաթվի ձևաչափը նույնպես փոխվել են, այս տարածաշրջանային պարամետրերի հավաքածուն կոչվում է լեզվական տարբերակը) Ես պետք է գործարկեմ նոր տերմինալի էմուլյատոր այս միջավայրում, որպեսզի այն հարմարեցնի իր նիշերի մատուցումը նոր լեզվին:

ISO-8859-15-ը մեկ բայթ նիշերի հավաքածու է, ինչը նշանակում է, որ այն ունի ընդամենը 256 նիշ (իրականում նույնիսկ դրանից պակաս): Այս նիշերի հավաքածուն օգտագործվում է արևմտաեվրոպական լեզուների համար, քանի որ այն ընդգրկում է նրա լեզուների մեծ մասը (և եվրոյի խորհրդանիշը):

Այն ունի 65 բայթ արժեքով նիշ, ինչպես UTF-8-ում կամ ASCII-ում, ունի նաև é նիշ (ինչպես սովորաբար օգտագործվում է ֆրանսերեն կամ իսպաներեն, օրինակ), բայց 233 բայթ արժեքով այն չունի նիշ:

Այս միջավայրում wc -c և wc -m միշտ նույն արդյունքը կտան:

Ubuntu-ում, ինչպես շատ ժամանակակիցներում Unix-ի նման համակարգեր, լռելյայն սովորաբար UTF-8 է, քանի որ դա միակ աջակցվող նիշերի հավաքածուն է (և կոդավորումը), որն ընդգրկում է Unicode-ի ողջ տիրույթը:

Կան այլ բազմաբայթ նիշերի կոդավորումներ, բայց դրանք այնքան էլ լավ չեն աջակցվում Ubuntu-ում, և դուք պետք է անցնեք օղակների միջով, որպեսզի կարողանաք ստեղծել դրանցով տեղայնացում, և եթե դա անեք, կտեսնեք, որ շատ բաներ ճիշտ չեն աշխատում: .

Այսպիսով, Ubuntu-ում նիշերի հավաքածուները կամ մեկ բայթ են կամ UTF-8:

Հիմա ևս մի քանի նշում.

UTF-8-ում ոչ բոլոր բայթերի հաջորդականություններն են կազմում վավեր նիշեր: Օրինակ, բոլոր UTF-8 նիշերը, որոնք ASCII չեն, ձևավորվում են բայթերով, որոնք բոլորն ունեն 8-րդ բիթ, բայց որտեղ միայն առաջինն ունի 7-րդ բիթ:

Եթե ​​ունեք բայթերի հաջորդականություն 8-րդ բիթներով, որոնցից ոչ մեկը չունի 7-րդ բիթ, ապա սա չի կարող թարգմանվել որպես նիշ: Եվ սա այն դեպքում, երբ դուք խնդիրներ և անհամապատասխանություններ ունեք, քանի որ ծրագրային ապահովումչգիտի, թե ինչ անել նրանց հետ: Օրինակ:

$ printf «\200\200\200» | wc -mc 0 3 $ printf «\200\200\200» | grep -q . || արձագանք ոչ ոչ

wc-ն և grep-ը գտան կերպարը, բայց.

$ x=$"\200\200\200" bash -c "echo "$(#x)"" 3

bash-ը գտնում է 3: Երբ այն չի կարող ցուցադրել բայթերի հաջորդականությունը նիշի համար, այն հաշվում է յուրաքանչյուր բայթ նիշը:

Սա կարող է բարդանալ, քանի որ Յունիկոդն ունի կոդային կետեր, որոնք վավեր չեն որպես նիշեր, իսկ որոշները՝ վավերական են Ոչեն խորհրդանիշներ, և կախված գործիքից, դրանց UTF-8 կոդավորումը կարող է կամ չհամարվել որպես նիշ:

Մեկ այլ բան, որը պետք է հաշվի առնել, կերպարի և գրաֆեմայի միջև եղած տարբերությունն է և դրանց պատկերացման եղանակը:

$ printf «e\u301\u20dd\n» é⃝ $ printf «e\u301\u20dd» | wc -mc 3 6

Այնտեղ մենք ունենք 3 նիշի ծածկագիր, քանի որ 6 բայթը ցուցադրվում է որպես մեկ գրաֆեմ, քանի որ մենք ունենք 3 նիշ միասին (մեկ հիմնական նիշ, սուր շեշտի համադրություն և շրջապատող շրջանի համադրություն):

Ubuntu-ում հայտնաբերված wc-ի GNU իրականացումն ունի -L անջատիչ՝ մուտքագրման մեջ ամենալայն գծի ցուցադրման լայնությունը նշելու համար.

$ printf «e\u301\u20dd\n» | wc -L 1

Դուք նաև կգտնեք, որ որոշ կերպարներ վերցնում են 2 բջիջներըլայնության հաշվարկով, ինչպիսին մերն է վերևում.

$ արձագանք 乕 | wc -L 2

Եզրափակելով. ավելի վայրի բառով բայթը, նիշը և գրաֆիկը պարտադիր չէ, որ նույնը լինեն:

Linux-ում wc հրամանի մի քանի գործնական օրինակներ, ինչպես հաշվել տեքստային ֆայլի տողերի, բառերի և նաև նիշերի քանակը:

Ի՞նչ է wc հրամանը Linux-ում:

Ցուցադրվում է wc հրամանը վիճակագրական տեղեկատվությունֆայլի մասին, օրինակ՝ տողերի, բառերի, նիշերի քանակը։

Ընդհանուր տեղեկություններ. wc-ն նշանակում է բառերի հաշվարկ:

wc հրամանի շարահյուսություն.

Wc

wc հրամանն ունի հետևյալ պարամետրերը.

  • -l: Տպում է միայն տողերի քանակը
  • -w: Տպում է միայն բառերի քանակը
  • -c: Տպում է միայն բայթերի քանակը
  • -M: Տպում է նիշերի քանակը (տարբերվում է ոչ տեքստային ֆայլերի բայթերի քանակից)
  • -L: Տպում է ֆայլի ամենաերկար տողի երկարությունը
  • -files0-from=F. Ստացեք ֆայլերի անունները F ֆայլից (ֆայլերի անունները պետք է առանձնացված լինեն NULL)

Linux-ում wc հրամանի 5 գործնական օրինակներ

Այս օրինակում մենք պատրաստվում ենք օգտագործել alex.txt և andreyex.txt ֆայլերը: Դուք կարող եք բեռնել այս ֆայլերը՝ օգտագործելով այս հոդվածի օրինակներում տրված wc հրամանը:

Տեքստի նիշերի քանակի հաշվում առցանց՝ https://charactercount.org/ru, հարմար գործիքհաշվելով տեքստի նիշերի քանակը, դուք միշտ կիմանաք, թե քանի նիշ և բառ կա տեքստում, ինչպես նաև հնարավոր է օգտագործել ավտոմատ պահպանումը տեքստի հետ աշխատելիս։

Եթե ​​դուք օգտագործում եք wc հրամանը միայն մուտքագրված ֆայլերի անուններով, առանց որևէ պարամետրի, այն ձեզ ցույց կտա տողերի, բառերի և բայթերի քանակը միաժամանակ:

Wc alex.txt 15 45 366 alex.txt

Վերոնշյալ ձևով.

  • 15 - տողերի քանակը
  • 45 - բառերի քանակը
  • 366 - բայթերի քանակը

Այժմ, երբ դուք գիտեք wc հրամանի պարամետրերը, եկեք տեսնենք wc հրամանի որոշ օրինակներ:

1. Հաշվեք ֆայլի տողերի քանակը

Եթե ​​պարզապես ցանկանում եք իմանալ տեքստային ֆայլի տողերի քանակը, կարող եք օգտագործել wc հրամանը «l» տարբերակով: Հիմնականում այն ​​հաշվում է ֆայլի տողերի քանակը:

Wc -l alex.txt 20 alex.txt

2. Հաշվիր ֆայլի բառերի քանակը

Եթե ​​պարզապես ցանկանում եք իմանալ տեքստային ֆայլի բառերի քանակը, կարող եք օգտագործել wc հրամանը «w» տարբերակով: Այն կցուցադրի բացատներով բառերի քանակը: