Difference between revisions of "Awk"

From wikieduonline
Jump to navigation Jump to search
 
(41 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{lowercase}}
 +
[[wikipedia:AWK]] ([[1977]])
 +
* https://man7.org/linux/man-pages/man1/awk.1p.html
  
  
 +
== Examples ==
 +
* <code>cat file.txt |  [[awk]] '{print $1}'</code>
 +
 +
 +
* '''Prepend''' a variable string ($STRING_TO_PREPEND) at the beginning of every line
 +
:<code>cat file.txt | awk '{print "'$STRING_TO_PREPEND' "$0}'<ref>https://serverfault.com/questions/72744/command-to-prepend-string-to-each-line</ref></code>
 +
 +
In case text to prepend is a variable ($PREPEND_TEXT_VAR):
 +
:<code>echo "$ORIGINAL_TEXT" | awk -v AWK_PREPEND_VAR="$PREPEND_TEXT_VAR"  '{print AWK_PREPEND_VAR" "$0}'</code>
 +
 +
Prepend time before every line
 +
:<code>echo "$ORIGINAL_TEXT" | awk -v time="$(date)" '{print time" "$0}'</code>
 +
 +
* Remove leading spaces at the beginning of a line:
 +
:<code>awk ' {$1=$1} 1 '</code><ref>https://catonmat.net/awk-one-liners-explained-part-two</ref>
 +
 +
* Print lines if field fith value ($5) is smaller than 100:
 +
:<code>awk '$FIELD_NUMER>VALUE'</code>
 +
:Example: <code>awk '$5<100'</code>
 +
 +
* Print '''all lines after''' some text<ref>https://stackoverflow.com/questions/17908555/printing-with-sed-or-awk-a-line-following-a-matching-pattern</ref>
 +
:<code>awk '/TEXT_TO_SEARCH/{f=1}f' file</code>
 +
 +
* Print every 3 lines:
 +
:<code>awk 'NR%3==1' your-file.txt</code>
 +
 +
* Print last field from a file
 +
:<code>awk '{[[print $NF]]}' your-file.txt</code>
 +
 +
*  Print last but one field from a file
 +
:<code>awk '{print $(NF-1)}' your-file.txt</code>
 +
 +
*  Print line only if a field meet a condition, bigger or smaller than, example field 4 bigger that 134:
 +
:<code>awk '$4 > 134 {print}' your-file.txt</code>
 +
 +
[[ps --no-headers]] -o "rss,cmd" -C php-fpm7.2 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
 +
 +
== Errors ==
 +
* <code>awk: calling undefined function [[gensub]]</code>
 +
 +
== Related ==
 +
* <code>[[sed]]</code>, <code>[[tr]]</code>
 +
* <code>[[lineinfile (Ansible)]]</code>
 +
* <code>[[gawk]]</code>
 +
* <code>[[tcl]]</code>
 +
* <code>[[a2]]</code> alias
 +
 +
== Activities ==
 +
* Read https://lists.gnu.org/archive/html/info-gnu/2020-04/msg00007.html
 +
* Read https://stackoverflow.com/questions/tagged/awk?tab=Votes
  
 
== See also ==
 
== See also ==
*{{grep}}
+
* {{awk}}
 
+
* {{grep}}
 +
* {{vi}}
  
 +
[[Category:AWK]]
 
[[Category:Linux]]
 
[[Category:Linux]]

Latest revision as of 18:28, 26 February 2024

wikipedia:AWK (1977)


Examples[edit]

  • cat file.txt | awk '{print $1}'


  • Prepend a variable string ($STRING_TO_PREPEND) at the beginning of every line
cat file.txt | awk '{print "'$STRING_TO_PREPEND' "$0}'[1]

In case text to prepend is a variable ($PREPEND_TEXT_VAR):

echo "$ORIGINAL_TEXT" | awk -v AWK_PREPEND_VAR="$PREPEND_TEXT_VAR" '{print AWK_PREPEND_VAR" "$0}'

Prepend time before every line

echo "$ORIGINAL_TEXT" | awk -v time="$(date)" '{print time" "$0}'
  • Remove leading spaces at the beginning of a line:
awk ' {$1=$1} 1 '[2]
  • Print lines if field fith value ($5) is smaller than 100:
awk '$FIELD_NUMER>VALUE'
Example: awk '$5<100'
  • Print all lines after some text[3]
awk '/TEXT_TO_SEARCH/{f=1}f' file
  • Print every 3 lines:
awk 'NR%3==1' your-file.txt
  • Print last field from a file
awk '{print $NF}' your-file.txt
  • Print last but one field from a file
awk '{print $(NF-1)}' your-file.txt
  • Print line only if a field meet a condition, bigger or smaller than, example field 4 bigger that 134:
awk '$4 > 134 {print}' your-file.txt
ps --no-headers -o "rss,cmd" -C php-fpm7.2 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

Errors[edit]

  • awk: calling undefined function gensub

Related[edit]

Activities[edit]

See also[edit]

  • https://serverfault.com/questions/72744/command-to-prepend-string-to-each-line
  • https://catonmat.net/awk-one-liners-explained-part-two
  • https://stackoverflow.com/questions/17908555/printing-with-sed-or-awk-a-line-following-a-matching-pattern
  • Advertising: