AWK ಆದೇಶಗಳು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಬರೆಯುವುದು ಹೇಗೆ

ಆದೇಶಗಳು, ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು ಉದಾಹರಣೆಗಳು

ಎಕ್ಕ್ ಆಜ್ಞೆಯು ಪಠ್ಯ ಫೈಲ್ಗಳನ್ನು ನಿರ್ದಿಷ್ಟವಾಗಿ, ರೇಖೆಗಳ (ಸಾಲುಗಳು) ಮತ್ತು ಕಾಲಮ್ಗಳಿಂದ ಆಯೋಜಿಸಲ್ಪಟ್ಟಿರುವ ಡೇಟಾ ಫೈಲ್ಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಅಥವಾ ವಿಶ್ಲೇಷಿಸಲು ಪ್ರಬಲ ವಿಧಾನವಾಗಿದೆ.

ಆಜ್ಞಾ ಸಾಲಿನಿಂದ ಸರಳ ಎಕ್ಕ್ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸಬಹುದು. ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾದ ಕಾರ್ಯಗಳನ್ನು ಎಕ್ಕ್ ಪ್ರೋಗ್ರಾಮ್ಗಳಾಗಿ (ಎಕ್ಕ್ ಲಿಪಿಗಳು ಎಂದು ಕರೆಯಲಾಗುವ) ಫೈಲ್ಗೆ ಬರೆಯಬೇಕು.

ಒಂದು awk ಆಜ್ಞೆಯ ಮೂಲ ಸ್ವರೂಪವು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

awk 'pattern {action}' ಇನ್ಪುಟ್-ಫೈಲ್> ಔಟ್ಪುಟ್-ಫೈಲ್

ಇದರರ್ಥ: ಇನ್ಪುಟ್ ಫೈಲ್ನ ಪ್ರತಿಯೊಂದು ಸಾಲನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ; ಸಾಲಿನ ಪ್ರಕಾರವು ಸಾಲಿನ ಕ್ರಮವನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತ-ಫೈಲ್ಗೆ ಫಲಿತವಾದ ಸಾಲನ್ನು ಬರೆಯುತ್ತದೆ. ನಮೂನೆಯನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟರೆ, ಕ್ರಮವು ಎಲ್ಲಾ ಸಾಲಿಗೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ:

awk '{print $ 5}' table1.txt> output1.txt

ಈ ಹೇಳಿಕೆಯು ಪ್ರತಿ ಸಾಲಿನ 5 ನೆಯ ಕಾಲಮ್ನ ಅಂಶವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಔಟ್ಪುಟ್ ಫೈಲ್ "ಔಟ್ಪುಟ್ ಟಿಕ್ಸ್" ನಲ್ಲಿ ಒಂದು ಸಾಲು ಎಂದು ಬರೆಯುತ್ತದೆ. '$ 4' ವೇರಿಯೇಬಲ್ ಎರಡನೇ ಕಾಲಮ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಹಾಗೆಯೇ ನೀವು $ 1, $ 2, $ 3, ಮೊದಲಾದವುಗಳೊಂದಿಗೆ ಮೊದಲ, ಎರಡನೆಯ, ಮತ್ತು ಮೂರನೇ ಕಾಲಮ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು. ಡೀಫಾಲ್ಟ್ ಕಾಲಮ್ಗಳ ಮೂಲಕ ಸ್ಥಳಗಳು ಅಥವಾ ಟ್ಯಾಬ್ಗಳು (ಆದ್ದರಿಂದ ಬಿಳಿ ಸ್ಥಳಾವಕಾಶವೆಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ) ಮೂಲಕ ಬೇರ್ಪಡಿಸಲಾಗಿರುತ್ತದೆ. ಆದ್ದರಿಂದ, ಇನ್ಪುಟ್ ಫೈಲ್ "table1.txt" ಈ ಸಾಲುಗಳನ್ನು ಹೊಂದಿದ್ದರೆ:

1, ಜಸ್ಟಿನ್ ಟಿಂಬರ್ಲೇಕ್, ಶೀರ್ಷಿಕೆ 545, ಬೆಲೆ $ 7.30 2, ಟೇಲರ್ ಸ್ವಿಫ್ಟ್, ಶೀರ್ಷಿಕೆ 723, ಬೆಲೆ $ 7.90 3, ಮಿಕ್ ಜಾಗರ್, ಶೀರ್ಷಿಕೆ 610, ಬೆಲೆ $ 7.90 4, ಲೇಡಿ ಗಾಗಾ, ಶೀರ್ಷಿಕೆ 118, ಬೆಲೆ $ 7.30 5, ಜಾನಿ ಕ್ಯಾಶ್, ಶೀರ್ಷಿಕೆ 482, ಬೆಲೆ $ 6.50 6, ಎಲ್ವಿಸ್ ಪ್ರೀಸ್ಲಿ, ಶೀರ್ಷಿಕೆ 335, ಬೆಲೆ $ 7.30 7, ಜಾನ್ ಲೆನ್ನನ್, ಶೀರ್ಷಿಕೆ 271, ಬೆಲೆ $ 7.90 8, ಮೈಕೆಲ್ ಜಾಕ್ಸನ್, ಶೀರ್ಷಿಕೆ 373, ಬೆಲೆ $ 5.50

ನಂತರ ಆಜ್ಞೆಯು ಔಟ್ಪುಟ್ ಫೈಲ್ "output1.txt" ಗೆ ಕೆಳಗಿನ ಸಾಲುಗಳನ್ನು ಬರೆಯುತ್ತದೆ:

545, 723, 610, 118, 482, 335, 271, 373,

ಕಾಲಮ್ ವಿಭಾಜಕವು ಅಲ್ಪವಿರಾಮ ಅಥವಾ ಟ್ಯಾಬ್ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಅಲ್ಪವಿರಾಮದಿಂದ, ನೀವು ಎಕ್ಕ್ ಹೇಳಿಕೆಯಲ್ಲಿ ಈ ಕೆಳಗಿನಂತೆ ಸೂಚಿಸಬಹುದು:

awk -F, '{print $ 3}' table1.txt> output1.txt

ಲಂಬಸಾಲುಗಳು ಅಲ್ಪವಿರಾಮದಿಂದ ಬೇರ್ಪಟ್ಟರೆಂದು ಪರಿಗಣಿಸಿದ್ದರೆ ಪ್ರತಿ ಸಾಲಿನಲ್ಲಿನ 3 ನೇ ಲಂಬಸಾಲಿನ ಅಂಶವನ್ನು ಇದು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ಆದ್ದರಿಂದ ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಔಟ್ಪುಟ್ ಆಗಿರುತ್ತದೆ:

ಶೀರ್ಷಿಕೆ 545 ಶೀರ್ಷಿಕೆ 723 ಶೀರ್ಷಿಕೆ 610 ಶೀರ್ಷಿಕೆ 118 ಶೀರ್ಷಿಕೆ 482 ಶೀರ್ಷಿಕೆ 335 ಶೀರ್ಷಿಕೆ 271 ಶೀರ್ಷಿಕೆ 373

ಕರ್ಲಿ ಬ್ರಾಕೆಟ್ಗಳಲ್ಲಿನ ಹೇಳಿಕೆಗಳ ಪಟ್ಟಿ ('{', '}') ಅನ್ನು ಬ್ಲಾಕ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ನೀವು ಬ್ಲಾಕ್ನ ಮುಂದೆ ಷರತ್ತುಬದ್ಧ ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ಇಟ್ಟರೆ, ಸ್ಥಿತಿಯು ನಿಜವಾಗಿದ್ದರೆ ಮಾತ್ರ ಬ್ಲಾಕ್ನ ಹೇಳಿಕೆ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ.

awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txt

ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಸ್ಥಿತಿಯು $ 7 == "\ $ 7.30", ಅಂದರೆ, ಕಾಲಮ್ 7 ನಲ್ಲಿನ ಅಂಶವು $ 7.30 ಗೆ ಸಮನಾಗಿರುತ್ತದೆ. ಡಾಲರ್ ಚಿಹ್ನೆಯ ಮುಂದೆ ಬ್ಯಾಕ್ಸ್ಲ್ಯಾಷ್ ಸಿಸ್ಟಮ್ ಅನ್ನು $ 7 ಅನ್ನು ವೇರಿಯೇಬಲ್ ಎಂದು ಅರ್ಥೈಸದಂತೆ ತಡೆಗಟ್ಟಲು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಬದಲಿಗೆ ಡಾಲರ್ ಚಿಹ್ನೆಯನ್ನು ಅಕ್ಷರಶಃ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.

ಆದ್ದರಿಂದ ಈ awk ಹೇಳಿಕೆಯು ಪ್ರತಿ ಸಾಲಿನ 3 ನೇ ಅಂಕಣದಲ್ಲಿ ಅಂಶವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ, ಅದು ಕಾಲಮ್ 7 ನಲ್ಲಿ "$ 7.30" ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ.

ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಸಹ ನೀವು ಸ್ಥಿತಿಯಂತೆ ಬಳಸಬಹುದು. ಉದಾಹರಣೆಗೆ:

awk '/ 30 / {print $ 3}' table1.txt

ಎರಡು ಸ್ಲಾಶ್ಗಳ ('/') ನಡುವಿನ ಸ್ಟ್ರಿಂಗ್ ಸಾಮಾನ್ಯ ಅಭಿವ್ಯಕ್ತಿಯಾಗಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಇದು ಕೇವಲ "30" ಸ್ಟ್ರಿಂಗ್ ಆಗಿದೆ. ಒಂದು ಸಾಲನ್ನು "30" ಸ್ಟ್ರಿಂಗ್ ಹೊಂದಿದ್ದರೆ ಅದು ಸಿಸ್ಟಮ್ ಆ ಸಾಲಿನಲ್ಲಿನ 3 ನೇ ಅಂಕಣದಲ್ಲಿ ಅಂಶವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿನ ಔಟ್ಪುಟ್ ಹೀಗಿರುತ್ತದೆ:

ಟಿಂಬರ್ಲೇಕ್, ಗಾಗಾ, ಪ್ರೀಸ್ಲಿ,

ಕೋಷ್ಟಕ ಅಂಶಗಳು ಎಕ್ಕ್ ಸಂಖ್ಯೆಗಳಾಗಿದ್ದರೆ ಈ ಉದಾಹರಣೆಯಲ್ಲಿರುವಂತೆ ಅವುಗಳ ಮೇಲೆ ಲೆಕ್ಕ ಹಾಕಬಹುದು:

awk '{print ($ 2 * $ 3) + $ 7}'

ಪ್ರಸ್ತುತ ಸಾಲು ($ 1, $ 2, ಇತ್ಯಾದಿ) ಪ್ರವೇಶ ಅಂಶಗಳು ಸಂಪೂರ್ಣ ಸಾಲು (ಲೈನ್) ಅನ್ನು ಸೂಚಿಸುವ ವೇರಿಯೇಬಲ್ $ 0, ಮತ್ತು ಕ್ಷೇತ್ರಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿರುವ ವೇರಿಯೇಬಲ್ ಎನ್ಎಫ್ನಂತಹ ವ್ಯತ್ಯಾಸದ ಅಂಶಗಳಲ್ಲದೆ.

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ನೀವು ಹೊಸ ಅಸ್ಥಿರಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು:

ಎಎಲ್ಕೆ '{ಮೊತ್ತ = 0; ಫಾರ್ (ಕೊಲ್ = 1; ಕೊಲ್ <= ಎನ್ಎಫ್; ಕೊಲ್ ++) ಮೊತ್ತ + = $ ಕೋಲ್; ಮುದ್ರಣ ಮೊತ್ತ; } '

ಇದು ಪ್ರತಿ ಸಾಲಿನ ಎಲ್ಲ ಅಂಶಗಳ ಮೊತ್ತವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ ಮತ್ತು ಮುದ್ರಿಸುತ್ತದೆ.

ಆಕ್ ಹೇಳಿಕೆಗಳನ್ನು ಆಗಾಗ್ಗೆ ಸೆಡ್ ಆಜ್ಞೆಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ.