షట్టర్‌స్టాక్ / గిలాంగ్ట్రిస్టియానో

టెక్స్ట్ ఫార్మాటింగ్ ఒక ఆసక్తికరమైన అంశం, ముఖ్యంగా బాష్ విషయానికి వస్తే. వచనాన్ని ఆకృతీకరించడానికి చాలా సాధనాలు ఉన్నప్పటికీ, printf ప్రత్యేకమైనది మరియు సార్వత్రికమైనది. మీ వచనాన్ని సరైన మార్గంలో ఫార్మాట్ చేయడానికి బాష్‌లోని printf గురించి తెలుసుకోండి!

ఉపయోగించి printf బాష్ లో

సి ++ మరియు ఇతర డెవలపర్లు ప్రోగ్రామింగ్ చేస్తున్నప్పుడు టెక్స్ట్ అవుట్‌పుట్‌ను ఫార్మాట్ చేయడానికి గొప్ప మార్గంగా ప్రింట్‌ఎఫ్‌తో ఇప్పటికే పరిచయం కలిగి ఉంటారు. అదే సాధనం బాష్‌లో అందుబాటులో ఉండటం పెద్ద ప్లస్. మీకు కావలసిన విధంగా క్లిష్టమైన అవుట్పుట్ ఫార్మాట్లను నియంత్రించడానికి మరియు ఉత్పత్తి చేయడానికి printf మిమ్మల్ని అనుమతిస్తుంది. ప్రింట్ ఎఫ్ మ్యాన్ పేజ్ ప్రింట్ ఎఫ్ ను ‘ఫార్మాట్ అండ్ ప్రింట్ డేటా’ సాధనంగా నిర్వచిస్తుంది, ఇది ఖచ్చితంగా అదే మరియు చేస్తుంది.

ఉదాహరణకు, మీరు పూర్ణాంక భాగానికి (దశాంశ బిందువు లేదా కామాకు ముందు భాగం, మీరు ప్రపంచంలో ఎక్కడ నివసిస్తున్నారు మరియు ఏ స్థానికంగా ఉన్నారో బట్టి 3 సంఖ్యలు (లేదా అక్షరాలు / సంఖ్యలు) ఖచ్చితమైన పొడవుతో దశాంశ ఆధారిత సంఖ్యను ముద్రించాలనుకుంటున్నారు. ) మరియు సంఖ్య యొక్క దశాంశ భాగానికి 2 బైట్లు (లేదా అక్షరాలు / సంఖ్యలు)? ఏమి ఇబ్బంది లేదు, printf దీన్ని చేయగలదు మరియు మరిన్ని. ఇది స్క్రీన్‌పై ఒక నిర్దిష్ట కాలమ్‌కు వచనాన్ని పంపగలదు.

Printf యొక్క వాక్యనిర్మాణం క్రొత్త డెవలపర్‌కు గందరగోళంగా లేదా సంక్లిష్టంగా అనిపించినప్పటికీ, వాస్తవానికి ఇది చాలా సులభం. ప్రింట్ ఎఫ్ అవుట్పుట్ నిర్వచనంలో ఉపయోగించబడే పరిమిత సాధారణంగా ఉపయోగించే ఫార్మాటింగ్ అక్షరాలు మాత్రమే ఉన్నాయి. మొదట వీటిని పరిశీలిద్దాం.

సింటాక్స్: printf

ఇవి ఎక్కువగా ఉపయోగించబడుతున్నాయి printf వాక్యనిర్మాణం సంఖ్య ఆకృతీకరణ ఇడియమ్స్:

%d or %i  a signed decimal integer
%u        an unsigned decimal integer
%f        a decimal floating point number
%e        a scientific notation number
%g        will let printf use %e or %f, whichever is shorter
%c        a single character
%s        a string of characters
%%        a literal '%'

తరువాత, ఈ ఆకృతీకరణ ఇడియమ్‌లకు సంబంధించి నిర్దిష్ట ఎంపికలను ఎలా పేర్కొనాలో తెలుసుకోవడం మంచిది. వీటి కోసం ఎంపికలను పేర్కొనే ఫార్మాట్ క్రింది విధంగా ఉంది:

%[flag(s)][width][.precision][length]number_formatting_idiom

ఉదాహరణలు: printf

కాబట్టి, ఉదాహరణకు, 3 వెడల్పు మరియు 2 యొక్క ఖచ్చితత్వంతో ఫ్లోట్ కలిగి ఉండటానికి, మీరు పేర్కొనాలి:

%3.2f

ఒక ఉదాహరణను పరిశీలిద్దాం:

printf "%3.2fn" "100.304" 

ప్రింట్‌ఎఫ్‌తో బాగా ఆకృతీకరించిన ఫ్లోట్‌ను ముద్రించడం

సాధారణ మరియు సులభం. మేము బదులుగా వేరియబుల్ ఉపయోగించవచ్చని గమనించండి "100.304":

VAR1=100.304
printf "%3.2fn" ${VAR1}

బాష్ వేరియబుల్ ఉపయోగించి ప్రింట్ ఎఫ్ ఫార్మాట్ చేసిన ఫ్లోట్‌ను ముద్రించడం

ఫైల్‌ను ఉపయోగించి మేము కొత్త పంక్తిని ఎలా జోడించామో కూడా గమనించండి n కొత్త పంక్తి క్రమం. అందుబాటులో ఉన్న వ్యాఖ్యాన శ్రేణుల పూర్తి జాబితా కోసం, చూడండి man printf. సర్వసాధారణం n కొత్త లైన్ కోసం, t కార్డుకు మరియు \ బాక్ స్లాష్ కోసం.

పై ఎంపికల ఆకృతిలో మనం జెండాలను ఎలా పేర్కొనవచ్చో కూడా చూశాము. పరిమిత సంఖ్యలో సాధారణ జెండాలు అందుబాటులో ఉన్నాయి:

-   Left-justify text (right-justify is the default)
+   Forces the use of a sign, even if positive
' ' A space is inserted if no sign will be used
0   Left-pad the number with zeroes instead of spaces when padding is specified

కాబట్టి, ఉదాహరణకు, మనము వీటిని కలిగి ఉండవచ్చు:

VAR1=-100.304
VAR2=100.304
printf "% 3.2ftt%+3.2fn" ${VAR1} ${VAR2}

Printf మరియు ఆకృతీకరణతో ప్రతికూల సంఖ్యలను ముద్రించడం

ఇక్కడ మేము రెండు వేరియబుల్స్ ఉపయోగించాము మరియు రెండు టాబ్ల నుండి అవుట్పుట్ను రెండు ఉపయోగించి వేరు చేసాము t పట్టికల శ్రేణులు. మేము మధ్యలో ఒక స్థలాన్ని (జెండా లాగా) ఉంచాము % మరియు వెడల్పు యొక్క నిర్వచనం. ఇది ప్రతికూల సంఖ్యకు దారితీసింది VAR1 ప్రతికూల చిహ్నాన్ని ఉపయోగించి ముద్రించబడాలి. సంఖ్య సానుకూలంగా ఉంటే, ఏ గుర్తు ముద్రించబడదు మరియు బదులుగా అదే స్థానంలో ఒక స్థలం ముద్రించబడి ఉంటుంది.

చివరగా మేము ఫైల్ను ఉపయోగించాము + ఫ్లాగ్ మరియు వాస్తవానికి మా సంఖ్య ప్రారంభంతో జారీ చేయబడుతుంది + సంఖ్య ఇప్పటికే సానుకూలంగా ఉందో లేదో సంబంధం లేకుండా సైన్ చేయండి మరియు అందువల్ల (సాధారణంగా) ఏ గుర్తు ముద్రించబడదు.

కాబట్టి నిర్దిష్ట పొడవు ఉన్నప్పుడే మనకు ప్రముఖ సున్నాలు లేదా ఖాళీలు ఉన్నాయని ఎలా నిర్ధారించుకోవచ్చు? మొదట, మన నిర్వచనం యొక్క వెడల్పు వేరియబుల్ విషయాల కంటే పొడవుగా ఉందని నిర్ధారించుకోవాలి మరియు రెండవది మనం ఉపయోగించవచ్చు 0 ప్రముఖ సున్నాలను చూపించడానికి ఫ్లాగ్:

VAR1=-100.304
VAR2=100.304
printf "% 13.2fn%013.2fn%13.2f" ${VAR1} ${VAR2} ${VAR1}

Printf కోసం అవుట్పుట్ను ఫార్మాట్ చేయడం మరియు ప్రముఖ సున్నాలను నిర్వచించడం

ఈ ఉదాహరణలో, మేము 3 పంక్తులను ప్రింట్ చేస్తాము, రెండుసార్లు వేరుచేస్తాము n కొత్త పంక్తి క్రమం. అవుట్పుట్ చివరిలో క్రొత్త పంక్తి లేకపోతే, మా బాష్ ప్రాంప్ట్ ప్రత్యేకంగా మా మూడవ వరుస అవుట్పుట్ చివరికి తిరిగి వస్తుందని మేము వెంటనే గమనించాము.

ఇది టెర్మినల్‌లోని ఇంటరాక్టివ్ మోడ్‌లో అందంగా లేదా ఆచరణాత్మక ఆకృతి కాకపోవచ్చు, కానీ స్క్రిప్ట్‌లోని నుండి (ఉదాహరణకు ఒక క్రమం కోసం ఆలోచించండి 1...2...3... మీరు కోడ్ ద్వారా వెళ్ళేటప్పుడు తెరపై దశల వారీగా నిర్మించేది) ఇది చాలా ఉపయోగకరంగా ఉంటుంది.

అవుట్పుట్ యొక్క రెండవ వరుసలో, మేము ఉపయోగిస్తాము 0 మేము ప్రముఖ సున్నాలను ఉపయోగించాలనుకుంటున్నామని సూచించడానికి ఫ్లాగ్ చేయండి VAR2. వాస్తవానికి, అవుట్పుట్ నిర్వచించిన పొడవు వరకు ప్రముఖ సున్నాలను ఉత్పత్తి చేస్తుంది.

అవుట్పుట్ యొక్క మొదటి వరుసలో, అవుట్పుట్ యొక్క మూడవ వరుసలో ఉన్నప్పుడు మేము ఖాళీని చేర్చాము (రెండూ ఫైల్ను ముద్రించడం VAR1 వేరియబుల్) మేము చేయలేదు. అవుట్పుట్ ఒకటే, ఇది పని చేసేటప్పుడు నేను కనుగొన్న ఏకైక చమత్కారం printf; ఇచ్చిన అదనపు పాత్ర ఉంటుందని ఒకరు ఆశిస్తారు printf స్పేస్ ఫ్లాగ్ నిర్వచనం. మేము ప్రముఖ సున్నాలను ఉపయోగించినప్పటికీ ఇది అలాగే ఉంటుంది. పొడవు పేర్కొనకపోయినా ఇది అలాగే ఉంటుంది.

కాబట్టి స్పేస్ ఫ్లాగ్ యొక్క వినియోగం కొన్ని సందర్భాల్లో (ప్రతికూల సంఖ్యలు) పరిమితం కావచ్చు. సానుకూల సంఖ్యల విషయంలో ఇది కాదు:

VAR1=100.304
printf "% fn%0fn" ${VAR1} ${VAR1}

ప్రత్యేక స్పేస్ ఫ్లాగ్ ఆధారంగా సానుకూల సంఖ్యలలో ప్రారంభ స్థలం

ఈ సందర్భంలో (సానుకూల సంఖ్యలు), ది స్పేస్ బ్యానర్ expected హించిన విధంగా పనిచేస్తుంది మరియు పూర్వం విషయంలో అదనపు స్థలం చేర్చబడుతుంది VAR1 ఉత్పత్తి.

ముగింపు

బాష్ స్క్రిప్ట్స్ నుండి లేదా కమాండ్ లైన్ నుండి printf ను ఉపయోగించడం వలన స్పష్టమైన మరియు బాగా నిర్వచించబడిన అవుట్పుట్ లభిస్తుంది. మీరు వేరియబుల్స్ సరిగ్గా స్కేల్ చేస్తే (మరియు ఖచ్చితంగా పరిధిని తనిఖీ చేయవచ్చు), ఉపయోగించి printf మీకు నచ్చినప్పటికీ అవుట్‌పుట్‌ను (మరియు పెద్ద అనువర్తనాల కోసం సాధారణ స్క్రీన్ లేఅవుట్) ఫార్మాట్ చేసే సౌకర్యవంతమైన పద్ధతిని మీకు అందిస్తుంది.

ఈ వ్యాసంలో మనం సాధారణంగా ఉపయోగించే నంబర్ ఫార్మాటింగ్ ఇడియమ్స్, సంఖ్యల పూర్ణాంకం మరియు దశాంశ భాగం యొక్క వెడల్పును ఎలా నిర్వచించాలో మరియు ప్రింట్‌ఎఫ్‌లో ఎక్కువగా ఉపయోగించే జెండాలను సమీక్షిస్తాము. ప్రింట్‌ఎఫ్‌తో చక్కగా ఆకృతీకరించిన డేటాను సరదాగా ముద్రించండి!

Source link