టెక్స్ట్ డేటా లేదా ఫైల్ నుండి నివేదికను శోధించడానికి మరియు రూపొందించడానికి లైనక్స్ ఆపరేటింగ్ సిస్టమ్లో అనేక యుటిలిటీ టూల్స్ ఉన్నాయి. AWK, grep మరియు sed ఆదేశాలను ఉపయోగించడం ద్వారా యూజర్ అనేక రకాల సెర్చ్, రీప్లేస్మెంట్ మరియు జెనరేటింగ్ టాస్క్లను సులభంగా చేయవచ్చు. awk కేవలం ఆదేశం కాదు. ఇది స్క్రిప్టింగ్ లాంగ్వేజ్, ఇది టెర్మినల్ మరియు అవ్క్ ఫైల్ రెండింటి నుండి ఉపయోగించబడుతుంది. ఇది ఇతర స్క్రిప్టింగ్ లాంగ్వేజ్ల వంటి వేరియబుల్, కండిషనల్ స్టేట్మెంట్, అర్రే, లూప్స్ మొదలైన వాటికి సపోర్ట్ చేస్తుంది. ఇది ఏదైనా ఫైల్ కంటెంట్ను లైన్ల వారీగా చదవగలదు మరియు నిర్దిష్ట డీలిమిటర్ ఆధారంగా ఫీల్డ్లు లేదా నిలువు వరుసలను వేరు చేయవచ్చు. ఇది టెక్స్ట్ కంటెంట్ లేదా ఫైల్లోని నిర్దిష్ట స్ట్రింగ్ని సెర్చ్ చేయడానికి రెగ్యులర్ ఎక్స్ప్రెషన్కు మద్దతు ఇస్తుంది మరియు ఏదైనా మ్యాచ్ దొరికితే చర్యలు తీసుకుంటుంది. మీరు 20 ఉపయోగకరమైన ఉదాహరణలను ఉపయోగించి ఈ ట్యుటోరియల్లో awk కమాండ్ మరియు స్క్రిప్ట్ ఎలా ఉపయోగించవచ్చో చూపబడింది.
కంటెంట్లు:
- printf తో awk
- తెల్లని ప్రదేశంలో విడిపోవడానికి అవాక్
- డెలిమిటర్ను మార్చడానికి అవ్క్
- ట్యాబ్-డీలిమిటెడ్ డేటాతో awk
- csv డేటాతో awk
- awk regex
- awk కేస్ ఇన్సెన్సిటివ్ రిగెక్స్
- af nf (ఫీల్డ్ల సంఖ్య) వేరియబుల్తో
- awk gensub () ఫంక్షన్
- rand () ఫంక్షన్తో awk
- awk వినియోగదారు నిర్వచించిన ఫంక్షన్
- అయ్యో ఉంటే
- awk వేరియబుల్స్
- awk శ్రేణులు
- అవ్క్ లూప్
- మొదటి కాలమ్ ముద్రించడానికి awk
- చివరి నిలువు వరుసను ముద్రించడానికి awk
- grep తో అవాక్
- బాష్ స్క్రిప్ట్ ఫైల్తో awk
- సెడ్ తో అవాక్
Printf తో awk ని ఉపయోగించడం
printf () చాలా ప్రోగ్రామింగ్ భాషలలో ఏదైనా అవుట్పుట్ను ఫార్మాట్ చేయడానికి ఫంక్షన్ ఉపయోగించబడుతుంది. ఈ ఫంక్షన్ని దీనితో ఉపయోగించవచ్చు అవాక్ వివిధ రకాల ఫార్మాట్ చేసిన అవుట్పుట్లను రూపొందించడానికి ఆదేశం. awk కమాండ్ ప్రధానంగా ఏదైనా టెక్స్ట్ ఫైల్ కోసం ఉపయోగించబడుతుంది. అనే టెక్స్ట్ ఫైల్ని సృష్టించండి ఉద్యోగి. టెక్స్ట్ టాబ్ (' t') ద్వారా ఫీల్డ్లు వేరు చేయబడిన కంటెంట్ క్రింద ఇవ్వబడింది.
ఉద్యోగి. టెక్స్ట్
1001 జాన్ సేనా 40000
1002 జాఫర్ ఇక్బాల్ 60000
1003 మెహెర్ నిగర్ 30000
1004 జానీ లివర్ 70000
కింది awk కమాండ్ దీని నుండి డేటాను చదువుతుంది ఉద్యోగి. టెక్స్ట్ పంక్తి వారీగా ఫైల్ చేయండి మరియు ఫార్మాట్ చేసిన తర్వాత మొదటి దాఖలును ముద్రించండి. ఇక్కడ, %10 లు n అంటే అవుట్పుట్ 10 అక్షరాల పొడవు ఉంటుంది. అవుట్పుట్ విలువ 10 అక్షరాల కంటే తక్కువగా ఉంటే, విలువ ముందు భాగంలో ఖాళీలు జోడించబడతాయి.
$ awk'{printf'%10 లు n', $ 1}'ఉద్యోగి.పదము
అవుట్పుట్:
తెల్లని ప్రదేశంలో విడిపోవడానికి అవాక్
ఏదైనా వచనాన్ని విభజించడానికి డిఫాల్ట్ పదం లేదా ఫీల్డ్ సెపరేటర్ వైట్ స్పేస్. awk కమాండ్ టెక్స్ట్ విలువను వివిధ మార్గాల్లో ఇన్పుట్గా తీసుకోవచ్చు. ఇన్పుట్ టెక్స్ట్ నుండి పంపబడింది బయటకు విసిరారు కింది ఉదాహరణలో ఆదేశం. వచనం, ' నాకు ప్రోగ్రామింగ్ అంటే ఇష్టం డిఫాల్ట్ సెపరేటర్ ద్వారా విభజించబడింది, స్థలం , మరియు మూడవ పదం అవుట్పుట్గా ముద్రించబడుతుంది.
$బయటకు విసిరారు 'నాకు ప్రోగ్రామింగ్ అంటే ఇష్టం' | అవాక్ '{$ 3} ముద్రించు'అవుట్పుట్:
డెలిమిటర్ను మార్చడానికి అవ్క్
ఏదైనా ఫైల్ కంటెంట్ కోసం డీలిమిటర్ను మార్చడానికి awk కమాండ్ ఉపయోగించవచ్చు. మీ వద్ద ఒక టెక్స్ట్ ఫైల్ ఉందని అనుకుందాం phone.txt కింది కంటెంట్తో ':' ఫైల్ కంటెంట్ యొక్క ఫీల్డ్ సెపరేటర్గా ఉపయోగించబడుతుంది.
phone.txt
+123: 334: 889: 778+880: 1855: 456: 907
+9: 7777: 38644: 808
డీలిమిటర్ని మార్చడానికి క్రింది awk ఆదేశాన్ని అమలు చేయండి, ':' ద్వారా '-' ఫైల్ కంటెంట్కి, phone.txt .
$ cat phone.txt$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt
అవుట్పుట్:
ట్యాబ్-డీలిమిటెడ్ డేటాతో awk
awk కమాండ్లో అనేక అంతర్నిర్మిత వేరియబుల్స్ ఉన్నాయి, వీటిని టెక్స్ట్ను వివిధ రకాలుగా చదవడానికి ఉపయోగిస్తారు. వాటిలో రెండు FS మరియు OFS . FS ఇన్పుట్ ఫీల్డ్ సెపరేటర్ మరియు OFS అవుట్పుట్ ఫీల్డ్ సెపరేటర్ వేరియబుల్స్. ఈ వేరియబుల్స్ యొక్క ఉపయోగాలు ఈ విభాగంలో చూపబడ్డాయి. A ని సృష్టించండి టాబ్ వేరు చేయబడిన ఫైల్ పేరు పెట్టబడింది input.txt ఉపయోగాలను పరీక్షించడానికి క్రింది కంటెంట్తో FS మరియు OFS వేరియబుల్స్.
Input.txt
క్లయింట్ వైపు స్క్రిప్టింగ్ భాషసర్వర్ వైపు స్క్రిప్టింగ్ భాష
డేటాబేస్ సర్వర్
వెబ్ సర్వర్
ట్యాబ్తో FS వేరియబుల్ ఉపయోగించడం
కింది ఆదేశం ప్రతి పంక్తిని విభజిస్తుంది input.txt ట్యాబ్ (' t') ఆధారంగా ఫైల్ మరియు ప్రతి లైన్ యొక్క మొదటి ఫీల్డ్ను ప్రింట్ చేయండి.
$అవాక్ '{$ 1} ముద్రించు' FS=' t'input.txtఅవుట్పుట్:
ట్యాబ్తో OFS వేరియబుల్ ఉపయోగించడం
కింది awk కమాండ్ ప్రింట్ చేస్తుంది 9వ మరియు 5వ యొక్క క్షేత్రాలు 'Ls -l' కాలమ్ శీర్షికను ముద్రించిన తర్వాత ట్యాబ్ సెపరేటర్తో కమాండ్ అవుట్పుట్ పేరు మరియు పరిమాణం . ఇక్కడ, OFS ఒక ట్యాబ్ ద్వారా అవుట్పుట్ను ఫార్మాట్ చేయడానికి వేరియబుల్ ఉపయోగించబడుతుంది.
$ls -ది$ls -ది | అవాక్ -v OFS=' t' 'BEGIN {printf'%s t%s n ',' Name ',' Size '} {ప్రింట్ $ 9, $ 5}'
అవుట్పుట్:
CSV డేటాతో awk
ఏదైనా CSV ఫైల్ యొక్క కంటెంట్ను awk కమాండ్ ఉపయోగించి అనేక విధాలుగా అన్వయించవచ్చు. 'అనే CSV ఫైల్ని సృష్టించండి customerr.csv 'Awk ఆదేశాన్ని వర్తింపజేయడానికి కింది కంటెంట్తో.
కస్టమర్. టెక్స్ట్
ఐడి, పేరు, ఇమెయిల్, ఫోన్1, సోఫియా, [ఇమెయిల్ రక్షించబడింది], (862) 478-7263
2, అమేలియా, [ఇమెయిల్ రక్షించబడింది], (530) 764-8000
3, ఎమ్మా, [ఇమెయిల్ రక్షించబడింది], (542) 986-2390
CSV ఫైల్ యొక్క ఒకే ఫీల్డ్ చదవడం
'-F' ఫైల్ యొక్క ప్రతి పంక్తిని విభజించడానికి డీలిమిటర్ను సెట్ చేయడానికి ఎంపికను awk కమాండ్తో ఉపయోగిస్తారు. కింది awk కమాండ్ ప్రింట్ చేస్తుంది పేరు రంగంలో కస్టమర్. csv ఫైల్.
$పిల్లిcustomerr.csv$అవాక్ -F ',' '{ప్రింట్ $ 2}'customerr.csv
అవుట్పుట్:
ఇతర టెక్స్ట్తో కలపడం ద్వారా బహుళ ఫీల్డ్లను చదవడం
కింది ఆదేశం మూడు ఫీల్డ్లను ప్రింట్ చేస్తుంది customerr.csv శీర్షిక వచనాన్ని కలపడం ద్వారా, పేరు, ఇమెయిల్ మరియు ఫోన్ . యొక్క మొదటి లైన్ customerr.csv ఫైల్ ప్రతి ఫీల్డ్ యొక్క శీర్షికను కలిగి ఉంటుంది. లేదు వేరియబుల్ ఫైల్ యొక్క పంక్తి సంఖ్యను కలిగి ఉంటుంది, awk కమాండ్ ఫైల్ను పార్స్ చేసినప్పుడు. ఈ ఉదాహరణలో, NR వేరియబుల్ ఫైల్ యొక్క మొదటి పంక్తిని వదిలివేయడానికి ఉపయోగించబడుతుంది. అవుట్పుట్ 2 చూపుతుందిnd, 3rdమరియు 4వమొదటి లైన్ మినహా అన్ని పంక్తుల ఫీల్డ్లు.
$అవాక్ -F ',' 'NR> 1 {ప్రింట్' పేరు: '$ 2', ఇమెయిల్: '$ 3', ఫోన్: '$ 4}'customerr.csvఅవుట్పుట్:
AVK స్క్రిప్ట్ ఉపయోగించి CSV ఫైల్ని చదవడం
awk ఫైల్ను అమలు చేయడం ద్వారా awk స్క్రిప్ట్ను అమలు చేయవచ్చు. మీరు awk ఫైల్ను ఎలా సృష్టించవచ్చు మరియు ఫైల్ను రన్ చేయవచ్చు అనేది ఈ ఉదాహరణలో చూపబడింది. అనే ఫైల్ను సృష్టించండి awkcsv.awk కింది కోడ్తో. ప్రారంభం కీవర్డ్ స్క్రిప్ట్లో స్క్రిప్ట్ను అమలు చేయడానికి awk కమాండ్కు తెలియజేయడానికి ఉపయోగించబడుతుంది ప్రారంభం ఇతర పనులను అమలు చేసే ముందు ముందుగా విడిపోండి. ఇక్కడ, ఫీల్డ్ సెపరేటర్ ( FS ) విభజన విభజన మరియు 2 ని నిర్వచించడానికి ఉపయోగిస్తారుndమరియు 1సెయింట్printf () ఫంక్షన్లో ఉపయోగించిన ఫార్మాట్ ప్రకారం ఫీల్డ్లు ముద్రించబడతాయి.
awkcsv.అవాక్ప్రారంభం{FS= ','} { printf '% 5s (% s) n',$2,$1}
అమలు awkcsv.awk యొక్క కంటెంట్తో ఫైల్ కస్టమర్. csv కింది ఆదేశం ద్వారా ఫైల్.
$అవాక్ -fawkcsv.awk customerr.csvఅవుట్పుట్:
awk regex
సాధారణ వ్యక్తీకరణ అనేది టెక్స్ట్లో ఏదైనా స్ట్రింగ్ను శోధించడానికి ఉపయోగించే ఒక నమూనా. సాధారణ వ్యక్తీకరణను ఉపయోగించడం ద్వారా వివిధ రకాల క్లిష్టమైన శోధన మరియు భర్తీ పనులను చాలా సులభంగా చేయవచ్చు. Awk ఆదేశంతో సాధారణ వ్యక్తీకరణ యొక్క కొన్ని సాధారణ ఉపయోగాలు ఈ విభాగంలో చూపబడ్డాయి.
సరిపోలే పాత్రసెట్కింది ఆదేశం పదానికి సరిపోతుంది ఫూల్ లేదా బూల్ లేదా కూల్ ఇన్పుట్ స్ట్రింగ్తో మరియు పదం కనిపిస్తే ముద్రించండి. ఇక్కడ, బొమ్మ సరిపోలదు మరియు ముద్రించదు.
$printf 'అవివేకి nకూల్ nబొమ్మ nబూల్ ' | అవాక్ '/[FbC] ఊల్/'అవుట్పుట్:
లైన్ ప్రారంభంలో స్ట్రింగ్ను శోధిస్తోంది
'^' లైన్ ప్రారంభంలో ఏదైనా నమూనాను శోధించడానికి రెగ్యులర్ ఎక్స్ప్రెషన్లో సింబల్ ఉపయోగించబడుతుంది. ' లైనక్స్ ' కింది ఉదాహరణలో టెక్స్ట్ యొక్క ప్రతి పంక్తి ప్రారంభంలో పదం శోధించబడుతుంది. ఇక్కడ, రెండు పంక్తులు వచనంతో ప్రారంభమవుతాయి, 'లైనక్స్ 'మరియు ఆ రెండు పంక్తులు అవుట్పుట్లో చూపబడతాయి.
$బయటకు విసిరారు -మరియు 'లైనక్స్ ఉపయోగించడానికి ఉచితం nఇది ఓపెన్ సోర్స్ సాఫ్ట్వేర్ nLinuxHint ఉందిఒక ప్రముఖ బ్లాగ్ సైట్ ' | అవాక్ '/^లైనక్స్/'
అవుట్పుట్:
లైన్ చివర స్ట్రింగ్ని వెతుకుతోంది
'$' టెక్స్ట్ యొక్క ప్రతి లైన్ చివరన ఏదైనా నమూనాను శోధించడానికి రెగ్యులర్ ఎక్స్ప్రెషన్లో సింబల్ ఉపయోగించబడుతుంది. ' స్క్రిప్ట్ కింది ఉదాహరణలో పదం శోధించబడింది. ఇక్కడ, రెండు పంక్తులు పదం కలిగి ఉంటాయి, స్క్రిప్ట్ లైన్ చివరలో.
$బయటకు విసిరారు -మరియు 'PHP స్క్రిప్ట్ nజావాస్క్రిప్ట్ nవిజువల్ ప్రోగ్రామింగ్ ' | అవాక్ '/స్క్రిప్ట్ $/'అవుట్పుట్:
నిర్దిష్ట అక్షర సమితిని వదిలివేయడం ద్వారా శోధించడం
'^' ఏదైనా స్ట్రింగ్ నమూనా ముందు ఉపయోగించినప్పుడు గుర్తు టెక్స్ట్ ప్రారంభాన్ని సూచిస్తుంది (' / ^... /') లేదా ప్రకటించిన ఏదైనా అక్షర సమితి ముందు ^ […] . ఒకవేళ '^' చిహ్నం మూడవ బ్రాకెట్ లోపల ఉపయోగించబడుతుంది, [^...] అప్పుడు బ్రాకెట్ లోపల నిర్వచించబడిన అక్షరం శోధించే సమయంలో వదిలివేయబడుతుంది. కింది కమాండ్ ప్రారంభం కాని ఏదైనా పదాన్ని శోధిస్తుంది 'ఎఫ్' కానీ 'తో ముగుస్తుంది ఊల్ '. కూల్ మరియు బూల్ నమూనా మరియు టెక్స్ట్ డేటా ప్రకారం ముద్రించబడుతుంది.
$ printf 'అవివేకి nకూల్ nబొమ్మ nబూల్ ' |అవాక్' / [^ F] ఊల్ /'అవుట్పుట్:
awk కేస్ ఇన్సెన్సిటివ్ రిగెక్స్
డిఫాల్ట్గా, స్ట్రింగ్లో ఏదైనా నమూనాను శోధించేటప్పుడు సాధారణ వ్యక్తీకరణ కేస్ సెన్సిటివ్ సెర్చ్ చేస్తుంది. కేస్ సెన్సిటివ్ సెర్చ్ రెగ్యులర్ ఎక్స్ప్రెషన్తో awk కమాండ్ ద్వారా చేయవచ్చు. కింది ఉదాహరణలో, టోవర్ () కేస్ సెన్సిటివ్ సెర్చ్ చేయడానికి ఫంక్షన్ ఉపయోగించబడుతుంది. ఇక్కడ, ఇన్పుట్ టెక్స్ట్ యొక్క ప్రతి పంక్తిలోని మొదటి పదాన్ని ఉపయోగించడం ద్వారా లోయర్ కేస్గా మార్చబడుతుంది టోవర్ () సాధారణ వ్యక్తీకరణ నమూనాతో ఫంక్షన్ మరియు మ్యాచ్. టప్పర్ () ఈ ప్రయోజనం కోసం ఫంక్షన్ను కూడా ఉపయోగించవచ్చు, ఈ సందర్భంలో, నమూనా అన్ని పెద్ద అక్షరాల ద్వారా నిర్వచించబడాలి. కింది ఉదాహరణలో నిర్వచించిన వచనం శోధన పదాన్ని కలిగి ఉంది, 'వెబ్ రెండు పంక్తులలో ఇది అవుట్పుట్గా ముద్రించబడుతుంది.
$బయటకు విసిరారు -మరియు 'వెబ్ డిజైన్ nవెబ్ అభివృద్ధి nముసాయిదా ' | అవాక్ 'టోలవర్ ($ 0) ~ /^వెబ్ /;'అవుట్పుట్:
AF NF (ఫీల్డ్ల సంఖ్య) వేరియబుల్తో
NF ak కమాండ్ యొక్క అంతర్నిర్మిత వేరియబుల్ ఇది ఇన్పుట్ టెక్స్ట్ యొక్క ప్రతి లైన్లోని మొత్తం ఫీల్డ్ల సంఖ్యను లెక్కించడానికి ఉపయోగించబడుతుంది. బహుళ పంక్తులు మరియు బహుళ పదాలతో ఏదైనా టెక్స్ట్ ఫైల్ను సృష్టించండి. input.txt మునుపటి ఉదాహరణలో సృష్టించబడిన ఫైల్ ఇక్కడ ఉపయోగించబడింది.
కమాండ్ లైన్ నుండి NF ని ఉపయోగించడం
ఇక్కడ, మొదటి కమాండ్ కంటెంట్ని ప్రదర్శించడానికి ఉపయోగించబడుతుంది input.txt ఫైల్ మరియు రెండవ ఆదేశం ఉపయోగించి ఫైల్ యొక్క ప్రతి లైన్లో మొత్తం ఫీల్డ్ల సంఖ్యను చూపించడానికి ఉపయోగిస్తారు NF వేరియబుల్.
$ cat input.txt$ awk '{print NF}' input.txt
అవుట్పుట్:
AWK ఫైల్లో NF ని ఉపయోగించడం
పేరుతో ఒక AWK ఫైల్ను సృష్టించండి కౌంట్ క్రింద ఇచ్చిన స్క్రిప్ట్తో. ఈ స్క్రిప్ట్ ఏదైనా టెక్స్ట్ డేటాతో అమలు చేయబడినప్పుడు మొత్తం ఫీల్డ్లతో ప్రతి లైన్ కంటెంట్ అవుట్పుట్గా ముద్రించబడుతుంది.
కౌంట్
{$ ముద్రించు0}{ముద్రణ'[మొత్తం ఫీల్డ్లు:'NF']'}
కింది ఆదేశం ద్వారా స్క్రిప్ట్ను అమలు చేయండి.
$అవాక్ -fcount.awk ఇన్పుట్. టెక్స్ట్అవుట్పుట్:
awk gensub () ఫంక్షన్
గెటబ్ () అనేది నిర్దిష్ట డీలిమిటర్ లేదా రెగ్యులర్ ఎక్స్ప్రెషన్ నమూనా ఆధారంగా స్ట్రింగ్ను శోధించడానికి ఉపయోగించే ప్రత్యామ్నాయ ఫంక్షన్. ఈ ఫంక్షన్ లో నిర్వచించబడింది 'గాక్' డిఫాల్ట్గా ఇన్స్టాల్ చేయబడని ప్యాకేజీ. ఈ ఫంక్షన్ కోసం వాక్యనిర్మాణం క్రింద ఇవ్వబడింది. మొదటి పారామీటర్ రెగ్యులర్ ఎక్స్ప్రెషన్ ప్యాటర్న్ లేదా సెర్చ్ డీలిమిటర్ను కలిగి ఉంటుంది, రెండవ పారామీటర్ రీప్లేస్మెంట్ టెక్స్ట్ను కలిగి ఉంటుంది, మూడవ పరామితి సెర్చ్ ఎలా చేయబడుతుందో సూచిస్తుంది మరియు చివరి పరామితి ఈ ఫంక్షన్ వర్తింపజేసే టెక్స్ట్ను కలిగి ఉంటుంది.
వాక్యనిర్మాణం:
జెన్సబ్(regexp, భర్తీ, ఎలా[, లక్ష్యం])ఇన్స్టాల్ చేయడానికి కింది ఆదేశాన్ని అమలు చేయండి గాక్ ఉపయోగం కోసం ప్యాకేజీ గెటబ్ () awk ఆదేశంతో పని చేయండి.
$ sudo apt-get gawk ని ఇన్స్టాల్ చేయండి'అనే టెక్స్ట్ ఫైల్ని సృష్టించండి salesinfo.txt ఈ ఉదాహరణను ఆచరించడానికి కింది కంటెంట్తో. ఇక్కడ, ఫీల్డ్లు ట్యాబ్ ద్వారా వేరు చేయబడతాయి.
salesinfo.txt
నా 700000మీ 800000
బుధ 750000
200000 సేకరించండి
శుక్ర 430000
శని 820000
యొక్క సంఖ్యా క్షేత్రాలను చదవడానికి కింది ఆదేశాన్ని అమలు చేయండి salesinfo.txt మొత్తం విక్రయాల మొత్తాన్ని ఫైల్ చేయండి మరియు ముద్రించండి. ఇక్కడ, మూడవ పరామితి, 'G' ప్రపంచ శోధనను సూచిస్తుంది. అంటే ఫైల్ యొక్క పూర్తి కంటెంట్లో నమూనా శోధించబడుతుంది.
$అవాక్ '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} END {print 0} 'salesinfo.txt| bc -దిఅవుట్పుట్:
rand () ఫంక్షన్తో awk
వరుస () ఫంక్షన్ 0 కంటే ఎక్కువ మరియు 1 కంటే తక్కువ యాదృచ్ఛిక సంఖ్యను రూపొందించడానికి ఉపయోగించబడుతుంది. కాబట్టి, ఇది ఎల్లప్పుడూ ఒక భిన్న సంఖ్యను 1 కంటే తక్కువగా ఉత్పత్తి చేస్తుంది. కింది ఆదేశం ఒక భిన్నమైన యాదృచ్ఛిక సంఖ్యను ఉత్పత్తి చేస్తుంది మరియు దాని కంటే ఎక్కువ సంఖ్యను పొందడానికి విలువను 10 తో గుణిస్తుంది. 1. printf () ఫంక్షన్ను వర్తింపజేయడానికి దశాంశ బిందువు తర్వాత రెండు అంకెలు కలిగిన ఒక భిన్న సంఖ్య ముద్రించబడుతుంది. మీరు కింది ఆదేశాన్ని అనేకసార్లు అమలు చేస్తే, మీరు ప్రతిసారీ విభిన్న అవుట్పుట్ పొందుతారు.
$అవాక్ 'BEGIN {printf' సంఖ్య =%. 2f n ', రాండ్ ()*10}'అవుట్పుట్:
awk వినియోగదారు నిర్వచించిన ఫంక్షన్
మునుపటి ఉదాహరణలలో ఉపయోగించిన అన్ని విధులు అంతర్నిర్మిత విధులు. కానీ ఏవైనా నిర్దిష్టమైన పనిని చేయడానికి మీరు మీ AW స్క్రిప్ట్లో వినియోగదారు నిర్వచించిన ఫంక్షన్ను ప్రకటించవచ్చు. దీర్ఘచతురస్రం యొక్క ప్రాంతాన్ని లెక్కించడానికి మీరు అనుకూల ఫంక్షన్ను సృష్టించాలనుకుంటున్నారని అనుకుందాం. ఈ పనిని చేయడానికి, 'అనే పేరుతో ఒక ఫైల్ను సృష్టించండి ప్రాంతం కింది స్క్రిప్ట్తో. ఈ ఉదాహరణలో, వినియోగదారు నిర్వచించిన ఫంక్షన్ పేరు పెట్టబడింది ప్రాంతం() ఇన్పుట్ పారామితుల ఆధారంగా ప్రాంతాన్ని లెక్కించే మరియు ప్రాంత విలువను తిరిగి ఇచ్చే స్క్రిప్ట్లో ప్రకటించబడింది. గెట్లైన్ వినియోగదారు నుండి ఇన్పుట్ తీసుకోవడానికి కమాండ్ ఇక్కడ ఉపయోగించబడుతుంది.
ప్రాంతం
# ప్రాంతాన్ని లెక్కించండిఫంక్షన్ప్రాంతం(ఎత్తు,వెడల్పు){
తిరిగిఎత్తు*వెడల్పు
}
# అమలు ప్రారంభమవుతుంది
ప్రారంభం{
ముద్రణ'ఎత్తు విలువను నమోదు చేయండి:'
గెట్లైన్ హెచ్< '-'
ముద్రణ'వెడల్పు విలువను నమోదు చేయండి:'
getline w< '-'
ముద్రణ'ప్రాంతం ='ప్రాంతం(h,లో)
}
స్క్రిప్ట్ రన్ చేయండి.
$అవాక్ -fప్రాంతంఅవుట్పుట్:
ఉదాహరణ అయితే అవాక్
ఇతర ప్రామాణిక ప్రోగ్రామింగ్ లాంగ్వేజ్ల వంటి షరతులతో కూడిన స్టేట్మెంట్లకు ak మద్దతు ఇస్తుంది. మూడు ఉదాహరణలను ఉపయోగించి ఈ విభాగంలో మూడు రకాల if స్టేట్మెంట్లు చూపబడ్డాయి. అనే టెక్స్ట్ ఫైల్ని సృష్టించండి అంశాలు. టెక్స్ట్ కింది కంటెంట్తో.
అంశాలు. టెక్స్ట్
HDD Samsung $ 100మౌస్ A4Tech
ప్రింటర్ HP $ 200
ఉదాహరణ అయితే సింపుల్ :
అతను కింది ఆదేశాన్ని కంటెంట్ని చదువుతాడు అంశాలు. టెక్స్ట్ ఫైల్ మరియు తనిఖీ చేయండి 3rd ప్రతి లైన్లో ఫీల్డ్ విలువ. విలువ ఖాళీగా ఉంటే, అది లైన్ నంబర్తో ఒక ఎర్రర్ మెసేజ్ను ప్రింట్ చేస్తుంది.
$అవాక్ '{if ($ 3 ==' ') ప్రింట్' ధర ఫీల్డ్ 'NR}' లైన్లో లేదుఅంశాలు. టెక్స్ట్అవుట్పుట్:
if-else ఉదాహరణ:
కింది కమాండ్ 3 అయితే ఐటెమ్ ధరను ప్రింట్ చేస్తుందిrdఫీల్డ్ లైన్లో ఉంది, లేకుంటే, అది ఎర్రర్ మెసేజ్ను ప్రింట్ చేస్తుంది.
$ awk'{if ($ 3 ==' ') ప్రింట్' ధర ఫీల్డ్ లేదు 'లేకపోతే ప్రింట్ 'వస్తువు ధర' $ 3} 'వస్తువులు.పదము
అవుట్పుట్:
if-else-if ఉదాహరణ:
టెర్మినల్ నుండి కింది ఆదేశం అమలు చేయబడినప్పుడు అది వినియోగదారు నుండి ఇన్పుట్ తీసుకుంటుంది. షరతు నిజం అయ్యే వరకు ఇన్పుట్ విలువ ప్రతి పరిస్థితితో పోల్చబడుతుంది. ఏదైనా షరతు నిజమైతే, అది సంబంధిత గ్రేడ్ను ప్రింట్ చేస్తుంది. ఒకవేళ ఇన్పుట్ విలువ ఏ షరతుతోనూ సరిపోలకపోతే అది ఫెయిల్ అని ముద్రించబడుతుంది.
$అవాక్ 'బిగిన్ {ప్రింట్' మార్క్ నమోదు చేయండి: 'గెట్లైన్ మార్క్<'-'
ఒకవేళ (గుర్తు> = 90) 'A+' ముద్రించండి
లేకపోతే (గుర్తు> = 80) 'A' ముద్రించండి
లేకపోతే (గుర్తు> = 70) 'B+' ముద్రించండి
లేకపోతే 'ఫెయిల్'} 'అని ముద్రించండి
అవుట్పుట్:
awk వేరియబుల్స్
అక్ వేరియబుల్ డిక్లరేషన్ షెల్ వేరియబుల్ డిక్లరేషన్ మాదిరిగానే ఉంటుంది. వేరియబుల్ విలువను చదవడంలో వ్యత్యాసం ఉంది. విలువను చదవడానికి షెల్ వేరియబుల్ కోసం వేరియబుల్ పేరుతో '$' గుర్తు ఉపయోగించబడుతుంది. కానీ విలువను చదవడానికి awk వేరియబుల్తో '$' ఉపయోగించాల్సిన అవసరం లేదు.
సాధారణ వేరియబుల్ ఉపయోగించి:
కింది ఆదేశం అనే వేరియబుల్ని ప్రకటిస్తుంది 'సైట్' మరియు ఆ వేరియబుల్కు స్ట్రింగ్ విలువ కేటాయించబడుతుంది. వేరియబుల్ విలువ తదుపరి స్టేట్మెంట్లో ముద్రించబడుతుంది.
$అవాక్ 'BEGIN {site =' LinuxHint.com '; ప్రింట్ సైట్} 'అవుట్పుట్:
ఫైల్ నుండి డేటాను తిరిగి పొందడానికి వేరియబుల్ను ఉపయోగించడం
కింది ఆదేశం పదాన్ని శోధిస్తుంది 'ప్రింటర్' ఫైల్లో అంశాలు. టెక్స్ట్ . ఫైల్ యొక్క ఏదైనా లైన్ దీనితో ప్రారంభమైతే 'ప్రింటర్ 'అప్పుడు అది విలువను నిల్వ చేస్తుంది 1సెయింట్ , 2nd మరియు 3rd మూడు వేరియబుల్స్లోకి ఫీల్డ్లు. పేరు మరియు ధర వేరియబుల్స్ ముద్రించబడతాయి.
$ awk'/ ప్రింటర్/ {name = $ 1; బ్రాండ్ = $ 2; ధర = $ 3; ముద్రణ' అంశం పేరు = 'పేరు;'వస్తువు ధర =' ధర} 'ముద్రించువస్తువులు.పదము
అవుట్పుట్:
awk శ్రేణులు
సంఖ్యా మరియు అనుబంధ శ్రేణులు రెండింటినీ అవ్క్లో ఉపయోగించవచ్చు. AW లో అర్రే వేరియబుల్ డిక్లరేషన్ ఇతర ప్రోగ్రామింగ్ భాషలకు సమానంగా ఉంటుంది. శ్రేణుల యొక్క కొన్ని ఉపయోగాలు ఈ విభాగంలో చూపబడ్డాయి.
అనుబంధ శ్రేణి:
శ్రేణి యొక్క సూచిక అనుబంధ శ్రేణికి ఏదైనా స్ట్రింగ్ అవుతుంది. ఈ ఉదాహరణలో, మూడు మూలకాల అనుబంధ శ్రేణి ప్రకటించబడింది మరియు ముద్రించబడుతుంది.
$అవాక్ 'ప్రారంభం {పుస్తకాలు ['వెబ్ డిజైన్'] = 'HTML 5 నేర్చుకోవడం';
పుస్తకాలు ['వెబ్ ప్రోగ్రామింగ్'] = 'PHP మరియు MySQL'
పుస్తకాలు ['PHP ఫ్రేమ్వర్క్'] = 'లారావెల్ 5 నేర్చుకోవడం'
printf '%s n%s n%s n', పుస్తకాలు ['వెబ్ డిజైన్'], పుస్తకాలు ['వెబ్ ప్రోగ్రామింగ్'],
పుస్తకాలు ['PHP ఫ్రేమ్వర్క్']} '
అవుట్పుట్:
సంఖ్యా శ్రేణి:
ట్యాబ్ను వేరు చేయడం ద్వారా మూడు మూలకాల సంఖ్యా శ్రేణి ప్రకటించబడింది మరియు ముద్రించబడుతుంది.
$ awk'ప్రారంభం {సంఖ్య [0] = 80;
సంఖ్య [1] = 55;
సంఖ్య [2] = 76;
# ప్రింట్ అర్రే ఎలిమెంట్స్
printf 'శ్రేణి విలువలు: %d t%d t%d n', సంఖ్య [0], సంఖ్య [1], సంఖ్య [2]; } '
అవుట్పుట్:
అవ్క్ లూప్
మూడు రకాల లూప్లు ఏక్ ద్వారా మద్దతు ఇస్తాయి. మూడు ఉదాహరణలను ఉపయోగించి ఈ లూప్ల ఉపయోగాలు ఇక్కడ చూపబడ్డాయి.
లూప్ అయితే:
అయితే కింది ఆదేశంలో ఉపయోగించిన లూప్ 5 సార్లు పునరావృతమవుతుంది మరియు బ్రేక్ స్టేట్మెంట్ కోసం లూప్ నుండి నిష్క్రమిస్తుంది.
$ అవాక్ 'ప్రారంభం {n = 1; అయితే (n 5) విరామం; ప్రింట్ n; n ++}} 'అవుట్పుట్:
లూప్ కోసం:
కింది awk కమాండ్లో ఉపయోగించే లూప్ కోసం 1 నుండి 10 వరకు మొత్తాన్ని లెక్కించి, విలువను ప్రింట్ చేస్తుంది.
$అవాక్ 'ప్రారంభం {మొత్తం = 0; కోసం (n = 1; n<= 10; n++) sum=sum+n; print sum }'అవుట్పుట్:
డు-అయితే లూప్:
కింది కమాండ్ యొక్క డూ-వైట్ లూప్ అన్ని సరి సంఖ్యలను 10 నుండి 5 వరకు ప్రింట్ చేస్తుంది.
$అవాక్ 'బిగిన్ {కౌంటర్ = 10; {if (కౌంటర్%2 == 0) ప్రింట్ కౌంటర్ చేయండి; కౌంటర్--}అయితే (కౌంటర్> 5)} '
అవుట్పుట్:
మొదటి కాలమ్ ముద్రించడానికి awk
AV లో $ 1 వేరియబుల్ ఉపయోగించి ఏదైనా ఫైల్ యొక్క మొదటి కాలమ్ ముద్రించవచ్చు. కానీ మొదటి కాలమ్ విలువ బహుళ పదాలను కలిగి ఉంటే, మొదటి కాలమ్ యొక్క మొదటి పదం మాత్రమే ముద్రించబడుతుంది. నిర్దిష్ట డీలిమిటర్ని ఉపయోగించడం ద్వారా, మొదటి కాలమ్ను సరిగ్గా ముద్రించవచ్చు. అనే టెక్స్ట్ ఫైల్ని సృష్టించండి విద్యార్థులు. టెక్స్ట్ కింది కంటెంట్తో. ఇక్కడ, మొదటి కాలమ్లో రెండు పదాల టెక్స్ట్ ఉంటుంది.
విద్యార్థులు. టెక్స్ట్
కనిజ్ ఫతేమా 30వబ్యాచ్అబీర్ హోస్సేన్ 35వబ్యాచ్
జాన్ అబ్రహం 40వబ్యాచ్
ఏ డీలిమిటర్ లేకుండా awk ఆదేశాన్ని అమలు చేయండి. మొదటి కాలమ్ యొక్క మొదటి భాగం ముద్రించబడుతుంది.
$అవాక్ '{$ 1} ముద్రించు'విద్యార్థులు. టెక్స్ట్కింది డీలిమిటర్తో awk ఆదేశాన్ని అమలు చేయండి. మొదటి కాలమ్ యొక్క పూర్తి భాగం ముద్రించబడుతుంది.
$అవాక్ -F '\ s \ s' '{$ 1} ముద్రించు'విద్యార్థులు. టెక్స్ట్అవుట్పుట్:
చివరి నిలువు వరుసను ముద్రించడానికి awk
$ (NF) వేరియబుల్ ఏదైనా ఫైల్ యొక్క చివరి నిలువు వరుసను ముద్రించడానికి ఉపయోగించవచ్చు. కింది awk ఆదేశాలు చివరి కాలమ్ యొక్క చివరి భాగాన్ని మరియు పూర్తి భాగాన్ని ప్రింట్ చేస్తాయి విద్యార్థులు. టెక్స్ట్ ఫైల్.
$అవాక్ '{ప్రింట్ $ (NF)}'విద్యార్థులు. టెక్స్ట్$అవాక్ -F '\ s \ s' '{ప్రింట్ $ (NF)}'విద్యార్థులు. టెక్స్ట్
అవుట్పుట్:
grep తో అవాక్
ఏదైనా రెగ్యులర్ ఎక్స్ప్రెషన్ ఆధారంగా ఫైల్లో కంటెంట్ను శోధించడానికి లైనక్స్ యొక్క మరొక ఉపయోగకరమైన ఆదేశం grep. Awk మరియు grep ఆదేశాలను రెండింటినీ కలిపి ఎలా ఉపయోగించవచ్చో కింది ఉదాహరణలో చూపబడింది. పట్టు ఉద్యోగి ఐడి సమాచారాన్ని శోధించడానికి కమాండ్ ఉపయోగించబడుతుంది, ' 1002 'నుండి ఉద్యోగి. టెక్స్ట్ ఫైల్. Grep కమాండ్ యొక్క అవుట్పుట్ అవుట్కి ఇన్పుట్ డేటాగా పంపబడుతుంది. ఉద్యోగి ID జీతం ఆధారంగా 5% బోనస్ లెక్కించబడుతుంది మరియు ముద్రించబడుతుంది, 1002 ' awk ఆదేశం ద్వారా.
$పిల్లిఉద్యోగి. టెక్స్ట్$పట్టు '1002'ఉద్యోగి. టెక్స్ట్| అవాక్ -F ' t' '{$ 2 ముద్రించు' $ '($ 3*5)/100' బోనస్ '}' పొందుతుంది
అవుట్పుట్:
AASK BASH ఫైల్తో
ఇతర Linux కమాండ్ లాగానే, AWK కమాండ్ కూడా BASH లిపిలో ఉపయోగించవచ్చు. అనే టెక్స్ట్ ఫైల్ని సృష్టించండి వినియోగదారులు. టెక్స్ట్ కింది కంటెంట్తో. ఈ ఫైల్ యొక్క ప్రతి పంక్తి నాలుగు ఫీల్డ్ల సమాచారాన్ని కలిగి ఉంటుంది. ఇవి కస్టమర్ ID, పేరు, చిరునామా మరియు మొబైల్ నంబర్ ద్వారా వేరు చేయబడ్డాయి '/ '.
వినియోగదారులు. టెక్స్ట్
AL4934 / చార్లెస్ M బ్రన్నర్ / 4838 బీగ్లీ స్ట్రీట్, హంట్స్విల్లే, అలబామా / 256-671-7942CA5455 / వర్జీనియా ఎస్ మోటా / 930 బాసెల్ స్ట్రీట్, వల్లెసిటో, కాలిఫోర్నియా / 415-679-5908
IL4855 / ఆన్ ఏ నీల్ / 1932 ప్యాటర్సన్ ఫోర్క్ రోడ్, చికాగో, ఇల్లినాయిస్ / 773-550-5107
అనే బాష్ ఫైల్ను సృష్టించండి item_search.bash కింది స్క్రిప్ట్తో. ఈ స్క్రిప్ట్ ప్రకారం, స్టేట్ వాల్యూ యూజర్ నుండి తీసుకోబడుతుంది మరియు దీనిలో సెర్చ్ చేయబడుతుంది వినియోగదారులు. టెక్స్ట్ ద్వారా ఫైల్ పట్టు ఆదేశం మరియు awk ఆదేశానికి ఇన్పుట్గా పంపబడింది. Awk కమాండ్ చదవబడుతుంది 2nd మరియు 4వ ప్రతి లైన్ యొక్క ఫీల్డ్లు. ఏదైనా రాష్ట్ర విలువతో ఇన్పుట్ విలువ సరిపోలితే వినియోగదారులు. టెక్స్ట్ ఫైల్ అప్పుడు అది వినియోగదారుని ప్రింట్ చేస్తుంది పేరు మరియు మొబైల్ నంబర్ , లేకపోతే, అది సందేశాన్ని ప్రింట్ చేస్తుంది కస్టమర్ దొరకలేదు .
item_search.bash
#!/బిన్/బాష్బయటకు విసిరారు 'రాష్ట్ర పేరును నమోదు చేయండి:'
చదవండిరాష్ట్రం
వినియోగదారులు='పట్టు '$ రాష్ట్రం'వినియోగదారులు. టెక్స్ట్| అవాక్ -F '/' '{ప్రింట్' కస్టమర్ పేరు: '$ 2,',
మొబైల్ నెం: '$ 4}''
ఉంటే [ '$ కస్టమర్లు' !='' ];అప్పుడు
బయటకు విసిరారు $ కస్టమర్లు
లేకపోతే
బయటకు విసిరారు 'కస్టమర్ దొరకలేదు'
ఉంటుంది
అవుట్పుట్లను చూపించడానికి కింది ఆదేశాలను అమలు చేయండి.
$పిల్లివినియోగదారులు. టెక్స్ట్$బాష్item_search.bash
అవుట్పుట్:
సెడ్ తో అవాక్
లైనక్స్ యొక్క మరొక ఉపయోగకరమైన శోధన సాధనం సెడ్ . ఈ ఆదేశం ఏదైనా ఫైల్ యొక్క వచనాన్ని శోధించడం మరియు భర్తీ చేయడం కోసం ఉపయోగించవచ్చు. కింది ఉదాహరణతో awk కమాండ్ ఉపయోగించడాన్ని చూపుతుంది సెడ్ కమాండ్ ఇక్కడ, సెడ్ కమాండ్ అన్ని ఉద్యోగుల పేర్లను 'అని మొదలవుతుంది జె 'మరియు awk ఆదేశానికి ఇన్పుట్గా వెళుతుంది. AW ఉద్యోగిని ప్రింట్ చేస్తుంది పేరు మరియు ID ఫార్మాటింగ్ తర్వాత.
$పిల్లిఉద్యోగి. టెక్స్ట్$సెడ్ -n '/J/p'ఉద్యోగి. టెక్స్ట్| అవాక్ -F ' t' '{printf'%s (%s) n ', $ 2, $ 1}'
అవుట్పుట్:
ముగింపు:
డేటాను సరిగా ఫిల్టర్ చేసిన తర్వాత ఏవైనా టేబులర్ లేదా డీలిమిటెడ్ డేటా ఆధారంగా వివిధ రకాల రిపోర్టులను సృష్టించడానికి మీరు awk ఆదేశాన్ని ఉపయోగించవచ్చు. ఆశిస్తున్నాము, ఈ ట్యుటోరియల్లో చూపిన ఉదాహరణలను ప్రాక్టీస్ చేసిన తర్వాత మీరు awk కమాండ్ ఎలా పనిచేస్తుందో తెలుసుకోవచ్చు.