खोज…


वाक्य - विन्यास

  • सूचकांक (बड़ा, छोटा)
  • लंबाई या लंबाई ()
  • लंबाई (स्ट्रिंग)
  • मैच (स्ट्रिंग, regex)
  • विभाजन (स्ट्रिंग, सरणी, विभाजक)
  • विभाजन (स्ट्रिंग, सरणी)
  • स्प्रिंटफ (प्रारूप, ...)
  • उप (रेगेक्स, विकल्प, स्ट्रिंग)
  • उप (रेगेक्स, विकल्प)
  • gsub (regex, विकल्प)
  • gsub (regex, subst, string)
  • पदार्थ (स्ट्रिंग, प्रारंभ, अंत)
  • पदार्थ (स्ट्रिंग, प्रारंभ)
  • tolower (स्ट्रिंग)
  • toupper (स्ट्रिंग)

पैरामीटर

पैरामीटर विवरण
बड़े स्ट्रिंग जो "छोटे" के लिए स्कैन की जाती है।
समाप्त वह सूचकांक जिस पर उप-स्ट्रिंग को समाप्त करना है।
प्रारूप एक printf प्रारूप।
थोड़ा "बड़ा" में स्कैन करने के लिए स्ट्रिंग।
regex एक विस्तारित-नियमित-अभिव्यक्ति
शुरू जिस पर उप-स्ट्रिंग शुरू करने के लिए सूचकांक।
तार एक स्ट्रिंग।
subst मिलान किए गए भाग के लिए स्थानापन्न करने के लिए स्ट्रिंग।

स्ट्रिंग को ऊपरी मामले में परिवर्तित करना

फंक्शन toupper एक स्ट्रिंग को अपर केस (कैपिटल लेटर्स) में बदल देगा। उदाहरण के लिए:

BEGIN {
    greeting = "hello"
    loud_greeting = toupper(greeting)
    print loud_greeting
}

यह कोड रन होने पर "HELLO" आउटपुट करेगा।

स्ट्रिंग कॉनटेनटेशन

स्ट्रिंग संघन बस किसी भी ऑपरेटर के बिना एक दूसरे के बगल में अभिव्यक्ति लिखकर किया जाता है। उदाहरण के लिए:

BEGIN {
   user = "root"
   print "Hello "user "!"
}

प्रिंट होगा: Hello root!

ध्यान दें कि व्हाट्सएप द्वारा भावों को अलग नहीं करना है।

एक स्ट्रिंग का हैश कम्प्यूटिंग

जबकि awk में मानक हैशिंग एल्गोरिथ्म में से एक को लागू शायद एक थकाऊ काम है, एक हैश समारोह है कि पाठ दस्तावेज़ों के लिए एक संभाल के रूप में इस्तेमाल किया जा सकता को परिभाषित करने और अधिक विनयशील है। एक व्यावहारिक स्थिति जहां इस तरह का एक फ़ंक्शन उपयोगी होता है, उदाहरण के लिए, परीक्षण के मामलों के लिए उनके विवरण के लिए छोटी आईडी आवंटित करना है, ताकि शॉर्ट आईडी को उपयोगकर्ता द्वारा उसके लंबे विवरण की आपूर्ति करने के बजाय आइटम के संदर्भ के रूप में दिया जा सके।

हैश फ़ंक्शन को वर्णों को संख्यात्मक कोड में बदलने की आवश्यकता होती है, जो स्क्रिप्ट की शुरुआत में प्रारंभ लुकअप तालिका का उपयोग करके पूरा किया जाता है। हैश फ़ंक्शन तब मॉड्यूलर अंकगणितीय परिवर्तनों का उपयोग करके गणना की जाती है, जो हैश की गणना के लिए एक बहुत ही शास्त्रीय दृष्टिकोण है।

प्रदर्शन उद्देश्यों के लिए, हम उनके हैश के साथ इनपुट लाइनों को सजाने के लिए एक नियम जोड़ते हैं, लेकिन फ़ंक्शन का उपयोग करने के लिए इस नियम की आवश्यकता नहीं है:

BEGIN{
  for(n=0;n<256;n++) {
    ord[sprintf("%c",n)] = n
  }
}

function hash(text, _prime, _modulo, _ax, _chars, _i)
{
  _prime = 104729;
  _modulo = 1048576;
  _ax = 0;
  split(text, _chars, "");
  for (_i=1; _i <= length(text); _i++) {
    _ax = (_ax * _prime + ord[_chars[_i]]) % _modulo;
  };
  return sprintf("%05x", _ax)
}

# Rule to demonstrate the function
#  These comments and the following line are not relevant
#  to the definition of the hash function but illustrate
#  its use.

{ printf("%s|%s\n", hash($0), $0) }

हम फ़ाइल hash.awk ऊपर दिए गए प्रोग्राम को hash.awk और इसे शास्त्रीय अंग्रेजी पुस्तक के शीर्षकों की एक छोटी सूची पर प्रदर्शित करते हैं:

awk -f hash.awk <<EOF
Wuthering Heights
Jane Eyre
Pride and Prejudice
The Mayor of Casterbridge
The Great Gatsby
David Copperfield
Great Expectations
The Return of the Soldier
Alice's Adventures in Wonderland
Animal Farm
EOF

आउटपुट है

6d6b1|Wuthering Heights
7539b|Jane Eyre
d8fba|Pride and Prejudice
fae95|The Mayor of Casterbridge
17fae|The Great Gatsby
c0005|David Copperfield
7492a|Great Expectations
12871|The Return of the Soldier
c3ab6|Alice's Adventures in Wonderland
46dc0|Animal Farm

जब मेरे पसंदीदा उपन्यास के 6948 गैर-रिक्त लाइनों में से प्रत्येक पर लागू किया गया तो यह हैश फ़ंक्शन किसी भी टक्कर को उत्पन्न नहीं करता है।

स्ट्रिंग को लोअर केस में बदलें

AWK अक्सर तार की सूची वाली संपूर्ण फ़ाइलों में हेरफेर करने के लिए उपयोग किया जाता है। मान लें कि फ़ाइल में awk_test_file.txt शामिल है:

First String
Second String
Third String

सभी स्ट्रिंग्स को लोअर केस एग्जीक्यूट में बदलने के लिए:

awk '{ print tolower($0) }' awk_test_file.txt

यह परिणाम होगा:

first string
second string
third string

स्ट्रिंग पाठ प्रतिस्थापन

SUB फ़ंक्शन awk के अंदर पाठ को स्थानापन्न करने की अनुमति देता है

उप (regexp, प्रतिस्थापन, लक्ष्य)

जहाँ regexp एक पूर्ण नियमित अभिव्यक्ति हो सकती है

$ cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG
$ awk '{sub("AAA","XXX", $0); print}' file
XXXAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG

पदार्थ निकालना

GNU awk एक मुख्य स्ट्रिंग से एक निश्चित लंबाई वर्ण अनुक्रम वापस करने के लिए एक उप-स्ट्रिंग निष्कर्षण फ़ंक्शन का समर्थन करता है। वाक्य-विन्यास है

*substr(string, start [, length ])* 

जहां, string स्रोत स्ट्रिंग और है start के निशान उप स्ट्रिंग स्थिति आप चाहते हैं निष्कर्षण एक वैकल्पिक लंबाई के लिए किया जाना की शुरुआत length अक्षर। यदि लंबाई निर्दिष्ट नहीं है, तो निष्कर्षण स्ट्रिंग के अंत तक किया जाता है।

स्ट्रिंग के पहले वर्ण को वर्ण संख्या एक माना जाता है।

awk '
BEGIN {
    testString = "MyTESTstring"
    substring  =  substr(testString, 3, 4)    # Start at character 3 for a length of 4 characters
    print substring
}'

उप-स्ट्रिंग TEST उत्पादन करेगा।

awk '
BEGIN {
    testString = "MyTESTstring"
    substring  =  substr(testString, 3)    # Start at character 3 till end of the string
    print substring
}'

यह उप-स्ट्रिंग को चरित्र स्थिति 3 से पूरे स्ट्रिंग के अंत तक TESTstring , जो TESTstring

ध्यान दें:-

  • यदि start को एक नकारात्मक मान दिया जाता है, तो GNU awk पूरे स्ट्रिंग को प्रिंट करता है और यदि length को एक शून्य-शून्य मान दिया जाता है, तो GNU awk व्यवहार null स्ट्रिंग देता है और व्यवहार awk विभिन्न कार्यान्वयनों में भिन्न होता है।


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow