[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, master, updated. gawk-4.1.0-5397-gba4dc1f2

From: Arnold Robbins
Subject: [SCM] gawk branch, master, updated. gawk-4.1.0-5397-gba4dc1f2
Date: Sat, 21 Oct 2023 14:09:05 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  ba4dc1f2d640edbce348a9f44d1dd67c01d1a5b3 (commit)
      from  d0cd5560acebf972f77bc96346402baa3f7eed5b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------

commit ba4dc1f2d640edbce348a9f44d1dd67c01d1a5b3
Author: Arnold D. Robbins <>
Date:   Sat Oct 21 21:08:37 2023 +0300

    Doc updates.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index a5bc943d..acee0fc9 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -3,6 +3,9 @@
        * gawk.texi: Remove notes at end of the file about sidebars.
        Thanks to Antonio Columbo for pointing out that it's no
        longer needed.
+       (Redirection): Revised discussion of mixing > and >>.
+       Motivated by mails from Hermann Peifer.
+       * wordlist3: Added some more OK words.
 2023-10-19         Arnold D. Robbins     <>
diff --git a/doc/ b/doc/
index 3f99c67b..12892471 100644
--- a/doc/
+++ b/doc/
@@ -7610,24 +7610,32 @@ work identically for ‘printf’:
    Redirecting output using ‘>’, ‘>>’, ‘|’, or ‘|&’ asks the 
system to
 open a file, pipe, or coprocess only if the particular FILE or COMMAND
 you specify has not already been written to by your program or if it has
-been closed since it was last written to.
-   It is a common error to use ‘>’ redirection for the first ‘print’ to
-a file, and then to use ‘>>’ for subsequent output:
-     # clear the file
-     print "Don't panic" > "guide.txt"
-     ...
-     # append
-     print "Avoid improbability generators" >> "guide.txt"
-This is indeed how redirections must be used from the shell.  But in
-‘awk’, it isn't necessary.  In this kind of case, a program should use
-‘>’ for all the ‘print’ statements, because the output file is only
-opened once.  (It happens that if you mix ‘>’ and ‘>>’ output is
-produced in the expected order.  However, mixing the operators for the
-same file is definitely poor style, and is confusing to readers of your
+been closed since it was last written to.  In other words, files, pipes,
+and coprocesses remain open until explicitly closed.  All further
+‘print’ and ‘printf’ statements continue to write to the same open 
+pipe, or coprocess.
+   In the shell, when you are building up a file a line at a time, you
+first use ‘>’ to create the file, and then you use ‘>>’ for subsequent
+additions to it, like so:
+     echo Name: Arnold Robbins > data
+     echo Street Address: 1234 A Pretty Street, NE >> data
+     echo City and State: MyTown, MyState 12345-6789 >> data
+   In ‘awk’, the ‘>’ and ‘>>’ operators are subtly different.  The
+operator you use the _first time_ you write to a file determines how
+‘awk’ will open (or create) the file.  If you use ‘>’, the file is
+truncated, and then all subsequent output appends data to the file, even
+if additional ‘print’ or ‘printf’ statements continue to use ‘>’.  
+you use ‘>>’ the first time, then existing data is not truncated, and
+all subsequent ‘print’ or ‘printf’ statements append data to the file.
+   You should be consistent and always use the same operator for all
+output to the same file.  (You can mix ‘>’ and ‘>>’, and nothing bad
+will happen, but mixing the operators is considered to be bad style in
+‘awk’.  If invoked with the ‘--lint’ option, ‘gawk’ issues a 
+when it encounters both operators being used for the same open file.)
    Many older ‘awk’ implementations limit the number of pipelines that
 an ‘awk’ program may have open to just one!  In ‘gawk’, there is no 
@@ -36520,7 +36528,7 @@ Index
 * awk, gawk and:                         Preface.             (line  21)
 * awk, gawk and <1>:                     This Manual.         (line  14)
 * awk, history of:                       History.             (line  21)
-* awk, implementation issues, pipes:     Redirection.         (line 129)
+* awk, implementation issues, pipes:     Redirection.         (line 137)
 * awk, implementations:                  Other Versions.      (line   6)
 * awk, implementations, limits:          Getline Notes.       (line  14)
 * awk, invoking:                         Command Line.        (line   6)
@@ -37309,7 +37317,7 @@ Index
 * differences in awk and gawk, implementation limitations: Getline Notes.
                                                               (line  14)
 * differences in awk and gawk, implementation limitations <1>: Redirection.
-                                                              (line 129)
+                                                              (line 137)
 * differences in awk and gawk, indirect function calls: Indirect Calls.
                                                               (line   6)
 * differences in awk and gawk, input/output operators: Getline/Coprocess.
@@ -37938,7 +37946,7 @@ Index
 * gawk, implementation issues, downward compatibility: Compatibility Mode.
                                                               (line   6)
 * gawk, implementation issues, limits:   Getline Notes.       (line  14)
-* gawk, implementation issues, pipes:    Redirection.         (line 129)
+* gawk, implementation issues, pipes:    Redirection.         (line 137)
 * gawk, installing:                      Installation.        (line   6)
 * gawk, internationalization:            Internationalization.
                                                               (line  19)
@@ -38152,7 +38160,7 @@ Index
 * implementation issues, gawk:           Notes.               (line   6)
 * implementation issues, gawk, debugging: Compatibility Mode. (line   6)
 * implementation issues, gawk, limits:   Getline Notes.       (line  14)
-* implementation issues, gawk, limits <1>: Redirection.       (line 129)
+* implementation issues, gawk, limits <1>: Redirection.       (line 137)
 * implicit namespace:                    Changing The Namespace.
                                                               (line  25)
 * in operator:                           Comparison Operators.
@@ -39171,7 +39179,7 @@ Index
 * shell function, gawkpath_prepend:      Shell Startup Files. (line  15)
 * shell quoting, rules for:              Quoting.             (line   6)
 * shell quoting, rules for <1>:          Other Arguments.     (line  72)
-* shells, piping commands into:          Redirection.         (line 135)
+* shells, piping commands into:          Redirection.         (line 143)
 * shells, quoting:                       Using Shell Variables.
                                                               (line  12)
 * shells, quoting, rules for:            Quoting.             (line  18)
@@ -39232,7 +39240,7 @@ Index
                                                               (line  73)
 * sidebar, Matching the Null String:     String Functions.    (line 573)
 * sidebar, Operator Evaluation Order:    Increment Ops.       (line  58)
-* sidebar, Piping into sh:               Redirection.         (line 134)
+* sidebar, Piping into sh:               Redirection.         (line 142)
 * sidebar, Pre-POSIX awk Used OFMT for String Conversion: Strings And Numbers.
                                                               (line  54)
 * sidebar, Quoting Shell Variables On The awk Command Line: Other Arguments.
@@ -39500,7 +39508,7 @@ Index
 * troubleshooting, match() function:     String Functions.    (line 310)
 * troubleshooting, print statement, omitting commas: Print Examples.
                                                               (line  30)
-* troubleshooting, printing:             Redirection.         (line 112)
+* troubleshooting, printing:             Redirection.         (line 115)
 * troubleshooting, quotes with file names: Special FD.        (line  62)
 * troubleshooting, readable data files:  File Checking.       (line   6)
 * troubleshooting, regexp constants vs. string constants: Computed Regexps.
@@ -39841,488 +39849,488 @@ Node: Control Letters326085
 Node: Format Modifiers331531
 Node: Printf Examples337803
 Node: Redirection340344
-Node: Special FD347409
-Ref: Special FD-Footnote-1350693
-Node: Special Files350771
-Node: Other Inherited Files351400
-Node: Special Network352465
-Node: Special Caveats353353
-Node: Close Files And Pipes354336
-Ref: Close Files And Pipes-Footnote-1360460
-Node: Close Return Value360608
-Ref: table-close-pipe-return-values361879
-Ref: Close Return Value-Footnote-1362710
-Node: Noflush362866
-Node: Nonfatal364374
-Node: Output Summary366789
-Node: Output Exercises368075
-Node: Expressions368766
-Node: Values369966
-Node: Constants370644
-Node: Scalar Constants371339
-Ref: Scalar Constants-Footnote-1373915
-Ref: Scalar Constants-Footnote-2374165
-Node: Nondecimal-numbers374245
-Node: Regexp Constants377358
-Node: Using Constant Regexps377904
-Node: Standard Regexp Constants378550
-Node: Strong Regexp Constants381846
-Node: Variables385689
-Node: Using Variables386354
-Node: Assignment Options388328
-Node: Conversion390879
-Node: Strings And Numbers391411
-Ref: Strings And Numbers-Footnote-1394621
-Node: Locale influences conversions394730
-Ref: table-locale-affects397568
-Node: All Operators398210
-Node: Arithmetic Ops398851
-Node: Concatenation401674
-Ref: Concatenation-Footnote-1404610
-Node: Assignment Ops404729
-Ref: table-assign-ops409856
-Node: Increment Ops411237
-Node: Truth Values and Conditions414828
-Node: Truth Values415922
-Node: Typing and Comparison417002
-Node: Variable Typing417834
-Ref: Variable Typing-Footnote-1424478
-Ref: Variable Typing-Footnote-2424558
-Node: Comparison Operators424639
-Ref: table-relational-ops425066
-Node: POSIX String Comparison428742
-Ref: POSIX String Comparison-Footnote-1430499
-Ref: POSIX String Comparison-Footnote-2430642
-Node: Boolean Ops430726
-Ref: Boolean Ops-Footnote-1435400
-Node: Conditional Exp435496
-Node: Function Calls437276
-Node: Precedence441223
-Node: Locales445086
-Node: Expressions Summary446762
-Node: Patterns and Actions449417
-Node: Pattern Overview450553
-Node: Regexp Patterns452278
-Node: Expression Patterns452824
-Node: Ranges456729
-Node: BEGIN/END459903
-Node: Using BEGIN/END460712
-Ref: Using BEGIN/END-Footnote-1463620
-Node: I/O And BEGIN/END463730
-Node: Empty469642
-Node: Using Shell Variables469959
-Node: Action Overview472285
-Node: Statements474720
-Node: If Statement476616
-Node: While Statement478179
-Node: Do Statement480267
-Node: For Statement481451
-Node: Switch Statement484806
-Node: Break Statement487355
-Node: Continue Statement489547
-Node: Next Statement491478
-Node: Nextfile Statement493957
-Node: Exit Statement496810
-Node: Built-in Variables499337
-Node: User-modified500514
-Node: Auto-set508721
-Ref: Auto-set-Footnote-1526805
-Ref: Auto-set-Footnote-2527023
-Node: ARGC and ARGV527079
-Node: Pattern Action Summary531508
-Node: Arrays534114
-Node: Array Basics535487
-Node: Array Intro536335
-Ref: figure-array-elements538346
-Ref: Array Intro-Footnote-1541199
-Node: Reference to Elements541331
-Node: Assigning Elements543851
-Node: Array Example544346
-Node: Scanning an Array546308
-Node: Controlling Scanning549403
-Ref: Controlling Scanning-Footnote-1556038
-Node: Numeric Array Subscripts556362
-Node: Uninitialized Subscripts558630
-Node: Delete560303
-Ref: Delete-Footnote-1563115
-Node: Multidimensional563172
-Node: Multiscanning566375
-Node: Arrays of Arrays568042
-Node: Arrays Summary572932
-Node: Functions575119
-Node: Built-in576177
-Node: Calling Built-in577366
-Node: Boolean Functions579406
-Node: Numeric Functions579968
-Ref: Numeric Functions-Footnote-1584153
-Ref: Numeric Functions-Footnote-2584837
-Ref: Numeric Functions-Footnote-3584889
-Node: String Functions585165
-Ref: String Functions-Footnote-1611616
-Ref: String Functions-Footnote-2611748
-Ref: String Functions-Footnote-3612004
-Node: Gory Details612091
-Ref: table-sub-escapes614100
-Ref: table-sub-proposed615731
-Ref: table-posix-sub617226
-Ref: table-gensub-escapes618899
-Ref: Gory Details-Footnote-1619818
-Node: I/O Functions619972
-Ref: table-system-return-values626648
-Ref: I/O Functions-Footnote-1628810
-Ref: I/O Functions-Footnote-2628958
-Node: Time Functions629078
-Ref: Time Functions-Footnote-1640160
-Ref: Time Functions-Footnote-2640228
-Ref: Time Functions-Footnote-3640390
-Ref: Time Functions-Footnote-4640501
-Ref: Time Functions-Footnote-5640617
-Ref: Time Functions-Footnote-6640844
-Node: Bitwise Functions641122
-Ref: table-bitwise-ops641720
-Ref: Bitwise Functions-Footnote-1647962
-Ref: Bitwise Functions-Footnote-2648139
-Node: Type Functions648334
-Node: I18N Functions651927
-Node: User-defined653662
-Node: Definition Syntax654482
-Ref: Definition Syntax-Footnote-1660300
-Node: Function Example660375
-Ref: Function Example-Footnote-1663354
-Node: Function Calling663376
-Node: Calling A Function663968
-Node: Variable Scope664938
-Node: Pass By Value/Reference667992
-Node: Function Caveats670720
-Ref: Function Caveats-Footnote-1672811
-Node: Return Statement672931
-Node: Dynamic Typing675986
-Node: Indirect Calls678368
-Node: Functions Summary689503
-Node: Library Functions692272
-Ref: Library Functions-Footnote-1695820
-Ref: Library Functions-Footnote-2695963
-Node: Library Names696138
-Ref: Library Names-Footnote-1699909
-Ref: Library Names-Footnote-2700136
-Node: General Functions700230
-Node: Strtonum Function701500
-Node: Assert Function704582
-Node: Round Function708032
-Node: Cliff Random Function709604
-Node: Ordinal Functions710628
-Ref: Ordinal Functions-Footnote-1713731
-Ref: Ordinal Functions-Footnote-2713983
-Node: Join Function714197
-Ref: Join Function-Footnote-1715995
-Node: Getlocaltime Function716199
-Node: Readfile Function719973
-Node: Shell Quoting722002
-Node: Isnumeric Function723458
-Node: To CSV Function724894
-Node: Data File Management726968
-Node: Filetrans Function727600
-Node: Rewind Function731876
-Node: File Checking733847
-Ref: File Checking-Footnote-1735213
-Node: Empty Files735418
-Node: Ignoring Assigns737481
-Node: Getopt Function739055
-Ref: Getopt Function-Footnote-1754873
-Node: Passwd Functions755085
-Ref: Passwd Functions-Footnote-1764220
-Node: Group Functions764308
-Ref: Group Functions-Footnote-1772432
-Node: Walking Arrays772643
-Node: Library Functions Summary775689
-Node: Library Exercises777109
-Node: Sample Programs777594
-Node: Running Examples778376
-Node: Clones779128
-Node: Cut Program780396
-Node: Egrep Program790820
-Node: Id Program800125
-Node: Split Program810217
-Ref: Split Program-Footnote-1820430
-Node: Tee Program820615
-Node: Uniq Program823521
-Node: Wc Program831381
-Node: Bytes vs. Characters831776
-Node: Using extensions833376
-Node: wc program834154
-Node: Miscellaneous Programs839147
-Node: Dupword Program840372
-Node: Alarm Program842421
-Node: Translate Program847324
-Ref: Translate Program-Footnote-1852033
-Node: Labels Program852311
-Ref: Labels Program-Footnote-1855746
-Node: Word Sorting855830
-Node: History Sorting860004
-Node: Extract Program862277
-Node: Simple Sed870532
-Node: Igawk Program873742
-Ref: Igawk Program-Footnote-1888943
-Ref: Igawk Program-Footnote-2889149
-Ref: Igawk Program-Footnote-3889279
-Node: Anagram Program889406
-Node: Signature Program892492
-Node: Programs Summary893742
-Node: Programs Exercises894996
-Ref: Programs Exercises-Footnote-1899298
-Node: Advanced Features899384
-Node: Nondecimal Data901865
-Node: Boolean Typed Values903495
-Node: Array Sorting905452
-Node: Controlling Array Traversal906181
-Ref: Controlling Array Traversal-Footnote-1914684
-Node: Array Sorting Functions914806
-Ref: Array Sorting Functions-Footnote-1920903
-Node: Two-way I/O921111
-Ref: Two-way I/O-Footnote-1929082
-Ref: Two-way I/O-Footnote-2929273
-Node: TCP/IP Networking929355
-Node: Profiling932523
-Node: Persistent Memory942193
-Ref: Persistent Memory-Footnote-1951765
-Node: Extension Philosophy951896
-Node: Advanced Features Summary953423
-Node: Internationalization955689
-Node: I18N and L10N957391
-Node: Explaining gettext958086
-Ref: Explaining gettext-Footnote-1964222
-Ref: Explaining gettext-Footnote-2964415
-Node: Programmer i18n964580
-Ref: Programmer i18n-Footnote-1969685
-Node: Translator i18n969734
-Node: String Extraction970564
-Ref: String Extraction-Footnote-1971740
-Node: Printf Ordering971838
-Ref: Printf Ordering-Footnote-1974696
-Node: I18N Portability974764
-Ref: I18N Portability-Footnote-1977324
-Node: I18N Example977391
-Ref: I18N Example-Footnote-1980785
-Ref: I18N Example-Footnote-2980858
-Node: Gawk I18N980975
-Node: I18N Summary981629
-Node: Debugger983026
-Node: Debugging984046
-Node: Debugging Concepts984495
-Node: Debugging Terms986312
-Node: Awk Debugging988915
-Ref: Awk Debugging-Footnote-1989888
-Node: Sample Debugging Session990024
-Node: Debugger Invocation990574
-Node: Finding The Bug992199
-Node: List of Debugger Commands998831
-Node: Breakpoint Control1000208
-Node: Debugger Execution Control1004030
-Node: Viewing And Changing Data1007504
-Node: Execution Stack1011238
-Node: Debugger Info1012919
-Node: Miscellaneous Debugger Commands1017214
-Node: Readline Support1022455
-Node: Limitations1023399
-Node: Debugging Summary1026023
-Node: Namespaces1027322
-Node: Global Namespace1028449
-Node: Qualified Names1029883
-Node: Default Namespace1030918
-Node: Changing The Namespace1031691
-Node: Naming Rules1033373
-Node: Internal Name Management1035288
-Node: Namespace Example1036358
-Node: Namespace And Features1038935
-Node: Namespace Summary1040390
-Node: Arbitrary Precision Arithmetic1041901
-Node: Computer Arithmetic1043420
-Ref: table-numeric-ranges1047228
-Ref: table-floating-point-ranges1047725
-Ref: Computer Arithmetic-Footnote-11048383
-Node: Math Definitions1048440
-Ref: table-ieee-formats1051472
-Node: MPFR features1052045
-Node: MPFR On Parole1052498
-Ref: MPFR On Parole-Footnote-11053339
-Node: MPFR Intro1053498
-Node: FP Math Caution1055182
-Ref: FP Math Caution-Footnote-11056254
-Node: Inexactness of computations1056627
-Node: Inexact representation1057658
-Node: Comparing FP Values1059039
-Node: Errors accumulate1060297
-Node: Strange values1061762
-Ref: Strange values-Footnote-11064416
-Node: Getting Accuracy1064521
-Node: Try To Round1067258
-Node: Setting precision1068165
-Ref: table-predefined-precision-strings1068870
-Node: Setting the rounding mode1070754
-Ref: table-gawk-rounding-modes1071136
-Ref: Setting the rounding mode-Footnote-11075188
-Node: Arbitrary Precision Integers1075371
-Ref: Arbitrary Precision Integers-Footnote-11078581
-Node: Checking for MPFR1078734
-Node: POSIX Floating Point Problems1080224
-Ref: POSIX Floating Point Problems-Footnote-11085044
-Node: Floating point summary1085082
-Node: Dynamic Extensions1087338
-Node: Extension Intro1088935
-Node: Plugin License1090237
-Node: Extension Mechanism Outline1091050
-Ref: figure-load-extension1091501
-Ref: figure-register-new-function1093079
-Ref: figure-call-new-function1094188
-Node: Extension API Description1096303
-Node: Extension API Functions Introduction1098032
-Ref: table-api-std-headers1099926
-Node: General Data Types1104367
-Ref: General Data Types-Footnote-11113513
-Node: Memory Allocation Functions1113816
-Ref: Memory Allocation Functions-Footnote-11118533
-Node: Constructor Functions1118632
-Node: API Ownership of MPFR and GMP Values1122533
-Node: Registration Functions1124086
-Node: Extension Functions1124790
-Node: Exit Callback Functions1130364
-Node: Extension Version String1131678
-Node: Input Parsers1132373
-Node: Output Wrappers1146992
-Node: Two-way processors1151834
-Node: Printing Messages1154187
-Ref: Printing Messages-Footnote-11155398
-Node: Updating ERRNO1155551
-Node: Requesting Values1156350
-Ref: table-value-types-returned1157103
-Node: Accessing Parameters1158211
-Node: Symbol Table Access1159492
-Node: Symbol table by name1160004
-Ref: Symbol table by name-Footnote-11163205
-Node: Symbol table by cookie1163337
-Ref: Symbol table by cookie-Footnote-11167606
-Node: Cached values1167670
-Ref: Cached values-Footnote-11171302
-Node: Array Manipulation1171459
-Ref: Array Manipulation-Footnote-11172558
-Node: Array Data Types1172595
-Ref: Array Data Types-Footnote-11175413
-Node: Array Functions1175509
-Node: Flattening Arrays1180538
-Node: Creating Arrays1187586
-Node: Redirection API1192428
-Node: Extension API Variables1195445
-Node: Extension Versioning1196168
-Ref: gawk-api-version1196597
-Node: Extension GMP/MPFR Versioning1198384
-Node: Extension API Informational Variables1200088
-Node: Extension API Boilerplate1201341
-Node: Changes from API V11205471
-Node: Finding Extensions1207103
-Node: Extension Example1207678
-Node: Internal File Description1208500
-Node: Internal File Ops1212792
-Ref: Internal File Ops-Footnote-11224342
-Node: Using Internal File Ops1224490
-Ref: Using Internal File Ops-Footnote-11226921
-Node: Extension Samples1227199
-Node: Extension Sample File Functions1228768
-Node: Extension Sample Fnmatch1236893
-Node: Extension Sample Fork1238488
-Node: Extension Sample Inplace1239764
-Node: Extension Sample Ord1243430
-Node: Extension Sample Readdir1244306
-Ref: table-readdir-file-types1245095
-Node: Extension Sample Revout1246451
-Node: Extension Sample Rev2way1247048
-Node: Extension Sample Read write array1247800
-Node: Extension Sample Readfile1251074
-Node: Extension Sample Time1252205
-Node: Extension Sample API Tests1254493
-Node: gawkextlib1255001
-Node: Extension summary1258033
-Node: Extension Exercises1261881
-Node: Language History1263151
-Node: V7/SVR3.11264863
-Node: SVR41267213
-Node: POSIX1268745
-Node: BTL1270170
-Node: POSIX/GNU1270937
-Node: Feature History1277466
-Node: Common Extensions1297268
-Node: Ranges and Locales1298743
-Ref: Ranges and Locales-Footnote-11303528
-Ref: Ranges and Locales-Footnote-21303555
-Ref: Ranges and Locales-Footnote-31303790
-Node: Contributors1304013
-Node: History summary1310204
-Node: Installation1311646
-Node: Gawk Distribution1312610
-Node: Getting1313102
-Node: Extracting1314101
-Node: Distribution contents1315807
-Node: Unix Installation1323881
-Node: Quick Installation1324701
-Node: Compiling with MPFR1327241
-Node: Shell Startup Files1327947
-Node: Additional Configuration Options1329104
-Node: Configuration Philosophy1331487
-Node: Compiling from Git1333987
-Node: Building the Documentation1334546
-Node: Non-Unix Installation1335958
-Node: PC Installation1336434
-Node: PC Binary Installation1337303
-Node: PC Compiling1338196
-Node: PC Using1339374
-Node: Cygwin1343090
-Node: MSYS1344342
-Node: OpenVMS Installation1344968
-Node: OpenVMS Compilation1345649
-Ref: OpenVMS Compilation-Footnote-11347132
-Node: OpenVMS Dynamic Extensions1347190
-Node: OpenVMS Installation Details1348826
-Node: OpenVMS Running1351257
-Node: OpenVMS GNV1355394
-Node: Bugs1356149
-Node: Bug definition1357069
-Node: Bug address1360670
-Node: Usenet1364239
-Node: Performance bugs1365452
-Node: Asking for help1368468
-Node: Maintainers1370455
-Node: Other Versions1371482
-Node: Installation summary1380781
-Node: Notes1382163
-Node: Compatibility Mode1382973
-Node: Additions1383795
-Node: Accessing The Source1384740
-Node: Adding Code1386271
-Node: New Ports1393382
-Node: Derived Files1397885
-Ref: Derived Files-Footnote-11403696
-Ref: Derived Files-Footnote-21403731
-Ref: Derived Files-Footnote-31404342
-Node: Future Extensions1404456
-Node: Implementation Limitations1405126
-Node: Extension Design1406368
-Node: Old Extension Problems1407528
-Ref: Old Extension Problems-Footnote-11409100
-Node: Extension New Mechanism Goals1409161
-Ref: Extension New Mechanism Goals-Footnote-11412631
-Node: Extension Other Design Decisions1412832
-Node: Extension Future Growth1415029
-Node: Notes summary1415649
-Node: Basic Concepts1416859
-Node: Basic High Level1417544
-Ref: figure-general-flow1417826
-Ref: figure-process-flow1418528
-Ref: Basic High Level-Footnote-11421898
-Node: Basic Data Typing1422087
-Node: Glossary1425495
-Node: Copying1458374
-Node: GNU Free Documentation License1495932
-Node: Index1521055
+Node: Special FD348116
+Ref: Special FD-Footnote-1351400
+Node: Special Files351478
+Node: Other Inherited Files352107
+Node: Special Network353172
+Node: Special Caveats354060
+Node: Close Files And Pipes355043
+Ref: Close Files And Pipes-Footnote-1361167
+Node: Close Return Value361315
+Ref: table-close-pipe-return-values362586
+Ref: Close Return Value-Footnote-1363417
+Node: Noflush363573
+Node: Nonfatal365081
+Node: Output Summary367496
+Node: Output Exercises368782
+Node: Expressions369473
+Node: Values370673
+Node: Constants371351
+Node: Scalar Constants372046
+Ref: Scalar Constants-Footnote-1374622
+Ref: Scalar Constants-Footnote-2374872
+Node: Nondecimal-numbers374952
+Node: Regexp Constants378065
+Node: Using Constant Regexps378611
+Node: Standard Regexp Constants379257
+Node: Strong Regexp Constants382553
+Node: Variables386396
+Node: Using Variables387061
+Node: Assignment Options389035
+Node: Conversion391586
+Node: Strings And Numbers392118
+Ref: Strings And Numbers-Footnote-1395328
+Node: Locale influences conversions395437
+Ref: table-locale-affects398275
+Node: All Operators398917
+Node: Arithmetic Ops399558
+Node: Concatenation402381
+Ref: Concatenation-Footnote-1405317
+Node: Assignment Ops405436
+Ref: table-assign-ops410563
+Node: Increment Ops411944
+Node: Truth Values and Conditions415535
+Node: Truth Values416629
+Node: Typing and Comparison417709
+Node: Variable Typing418541
+Ref: Variable Typing-Footnote-1425185
+Ref: Variable Typing-Footnote-2425265
+Node: Comparison Operators425346
+Ref: table-relational-ops425773
+Node: POSIX String Comparison429449
+Ref: POSIX String Comparison-Footnote-1431206
+Ref: POSIX String Comparison-Footnote-2431349
+Node: Boolean Ops431433
+Ref: Boolean Ops-Footnote-1436107
+Node: Conditional Exp436203
+Node: Function Calls437983
+Node: Precedence441930
+Node: Locales445793
+Node: Expressions Summary447469
+Node: Patterns and Actions450124
+Node: Pattern Overview451260
+Node: Regexp Patterns452985
+Node: Expression Patterns453531
+Node: Ranges457436
+Node: BEGIN/END460610
+Node: Using BEGIN/END461419
+Ref: Using BEGIN/END-Footnote-1464327
+Node: I/O And BEGIN/END464437
+Node: Empty470349
+Node: Using Shell Variables470666
+Node: Action Overview472992
+Node: Statements475427
+Node: If Statement477323
+Node: While Statement478886
+Node: Do Statement480974
+Node: For Statement482158
+Node: Switch Statement485513
+Node: Break Statement488062
+Node: Continue Statement490254
+Node: Next Statement492185
+Node: Nextfile Statement494664
+Node: Exit Statement497517
+Node: Built-in Variables500044
+Node: User-modified501221
+Node: Auto-set509428
+Ref: Auto-set-Footnote-1527512
+Ref: Auto-set-Footnote-2527730
+Node: ARGC and ARGV527786
+Node: Pattern Action Summary532215
+Node: Arrays534821
+Node: Array Basics536194
+Node: Array Intro537042
+Ref: figure-array-elements539053
+Ref: Array Intro-Footnote-1541906
+Node: Reference to Elements542038
+Node: Assigning Elements544558
+Node: Array Example545053
+Node: Scanning an Array547015
+Node: Controlling Scanning550110
+Ref: Controlling Scanning-Footnote-1556745
+Node: Numeric Array Subscripts557069
+Node: Uninitialized Subscripts559337
+Node: Delete561010
+Ref: Delete-Footnote-1563822
+Node: Multidimensional563879
+Node: Multiscanning567082
+Node: Arrays of Arrays568749
+Node: Arrays Summary573639
+Node: Functions575826
+Node: Built-in576884
+Node: Calling Built-in578073
+Node: Boolean Functions580113
+Node: Numeric Functions580675
+Ref: Numeric Functions-Footnote-1584860
+Ref: Numeric Functions-Footnote-2585544
+Ref: Numeric Functions-Footnote-3585596
+Node: String Functions585872
+Ref: String Functions-Footnote-1612323
+Ref: String Functions-Footnote-2612455
+Ref: String Functions-Footnote-3612711
+Node: Gory Details612798
+Ref: table-sub-escapes614807
+Ref: table-sub-proposed616438
+Ref: table-posix-sub617933
+Ref: table-gensub-escapes619606
+Ref: Gory Details-Footnote-1620525
+Node: I/O Functions620679
+Ref: table-system-return-values627355
+Ref: I/O Functions-Footnote-1629517
+Ref: I/O Functions-Footnote-2629665
+Node: Time Functions629785
+Ref: Time Functions-Footnote-1640867
+Ref: Time Functions-Footnote-2640935
+Ref: Time Functions-Footnote-3641097
+Ref: Time Functions-Footnote-4641208
+Ref: Time Functions-Footnote-5641324
+Ref: Time Functions-Footnote-6641551
+Node: Bitwise Functions641829
+Ref: table-bitwise-ops642427
+Ref: Bitwise Functions-Footnote-1648669
+Ref: Bitwise Functions-Footnote-2648846
+Node: Type Functions649041
+Node: I18N Functions652634
+Node: User-defined654369
+Node: Definition Syntax655189
+Ref: Definition Syntax-Footnote-1661007
+Node: Function Example661082
+Ref: Function Example-Footnote-1664061
+Node: Function Calling664083
+Node: Calling A Function664675
+Node: Variable Scope665645
+Node: Pass By Value/Reference668699
+Node: Function Caveats671427
+Ref: Function Caveats-Footnote-1673518
+Node: Return Statement673638
+Node: Dynamic Typing676693
+Node: Indirect Calls679075
+Node: Functions Summary690210
+Node: Library Functions692979
+Ref: Library Functions-Footnote-1696527
+Ref: Library Functions-Footnote-2696670
+Node: Library Names696845
+Ref: Library Names-Footnote-1700616
+Ref: Library Names-Footnote-2700843
+Node: General Functions700937
+Node: Strtonum Function702207
+Node: Assert Function705289
+Node: Round Function708739
+Node: Cliff Random Function710311
+Node: Ordinal Functions711335
+Ref: Ordinal Functions-Footnote-1714438
+Ref: Ordinal Functions-Footnote-2714690
+Node: Join Function714904
+Ref: Join Function-Footnote-1716702
+Node: Getlocaltime Function716906
+Node: Readfile Function720680
+Node: Shell Quoting722709
+Node: Isnumeric Function724165
+Node: To CSV Function725601
+Node: Data File Management727675
+Node: Filetrans Function728307
+Node: Rewind Function732583
+Node: File Checking734554
+Ref: File Checking-Footnote-1735920
+Node: Empty Files736125
+Node: Ignoring Assigns738188
+Node: Getopt Function739762
+Ref: Getopt Function-Footnote-1755580
+Node: Passwd Functions755792
+Ref: Passwd Functions-Footnote-1764927
+Node: Group Functions765015
+Ref: Group Functions-Footnote-1773139
+Node: Walking Arrays773350
+Node: Library Functions Summary776396
+Node: Library Exercises777816
+Node: Sample Programs778301
+Node: Running Examples779083
+Node: Clones779835
+Node: Cut Program781103
+Node: Egrep Program791527
+Node: Id Program800832
+Node: Split Program810924
+Ref: Split Program-Footnote-1821137
+Node: Tee Program821322
+Node: Uniq Program824228
+Node: Wc Program832088
+Node: Bytes vs. Characters832483
+Node: Using extensions834083
+Node: wc program834861
+Node: Miscellaneous Programs839854
+Node: Dupword Program841079
+Node: Alarm Program843128
+Node: Translate Program848031
+Ref: Translate Program-Footnote-1852740
+Node: Labels Program853018
+Ref: Labels Program-Footnote-1856453
+Node: Word Sorting856537
+Node: History Sorting860711
+Node: Extract Program862984
+Node: Simple Sed871239
+Node: Igawk Program874449
+Ref: Igawk Program-Footnote-1889650
+Ref: Igawk Program-Footnote-2889856
+Ref: Igawk Program-Footnote-3889986
+Node: Anagram Program890113
+Node: Signature Program893199
+Node: Programs Summary894449
+Node: Programs Exercises895703
+Ref: Programs Exercises-Footnote-1900005
+Node: Advanced Features900091
+Node: Nondecimal Data902572
+Node: Boolean Typed Values904202
+Node: Array Sorting906159
+Node: Controlling Array Traversal906888
+Ref: Controlling Array Traversal-Footnote-1915391
+Node: Array Sorting Functions915513
+Ref: Array Sorting Functions-Footnote-1921610
+Node: Two-way I/O921818
+Ref: Two-way I/O-Footnote-1929789
+Ref: Two-way I/O-Footnote-2929980
+Node: TCP/IP Networking930062
+Node: Profiling933230
+Node: Persistent Memory942900
+Ref: Persistent Memory-Footnote-1952472
+Node: Extension Philosophy952603
+Node: Advanced Features Summary954130
+Node: Internationalization956396
+Node: I18N and L10N958098
+Node: Explaining gettext958793
+Ref: Explaining gettext-Footnote-1964929
+Ref: Explaining gettext-Footnote-2965122
+Node: Programmer i18n965287
+Ref: Programmer i18n-Footnote-1970392
+Node: Translator i18n970441
+Node: String Extraction971271
+Ref: String Extraction-Footnote-1972447
+Node: Printf Ordering972545
+Ref: Printf Ordering-Footnote-1975403
+Node: I18N Portability975471
+Ref: I18N Portability-Footnote-1978031
+Node: I18N Example978098
+Ref: I18N Example-Footnote-1981492
+Ref: I18N Example-Footnote-2981565
+Node: Gawk I18N981682
+Node: I18N Summary982336
+Node: Debugger983733
+Node: Debugging984753
+Node: Debugging Concepts985202
+Node: Debugging Terms987019
+Node: Awk Debugging989622
+Ref: Awk Debugging-Footnote-1990595
+Node: Sample Debugging Session990731
+Node: Debugger Invocation991281
+Node: Finding The Bug992906
+Node: List of Debugger Commands999538
+Node: Breakpoint Control1000915
+Node: Debugger Execution Control1004737
+Node: Viewing And Changing Data1008211
+Node: Execution Stack1011945
+Node: Debugger Info1013626
+Node: Miscellaneous Debugger Commands1017921
+Node: Readline Support1023162
+Node: Limitations1024106
+Node: Debugging Summary1026730
+Node: Namespaces1028029
+Node: Global Namespace1029156
+Node: Qualified Names1030590
+Node: Default Namespace1031625
+Node: Changing The Namespace1032398
+Node: Naming Rules1034080
+Node: Internal Name Management1035995
+Node: Namespace Example1037065
+Node: Namespace And Features1039642
+Node: Namespace Summary1041097
+Node: Arbitrary Precision Arithmetic1042608
+Node: Computer Arithmetic1044127
+Ref: table-numeric-ranges1047935
+Ref: table-floating-point-ranges1048432
+Ref: Computer Arithmetic-Footnote-11049090
+Node: Math Definitions1049147
+Ref: table-ieee-formats1052179
+Node: MPFR features1052752
+Node: MPFR On Parole1053205
+Ref: MPFR On Parole-Footnote-11054046
+Node: MPFR Intro1054205
+Node: FP Math Caution1055889
+Ref: FP Math Caution-Footnote-11056961
+Node: Inexactness of computations1057334
+Node: Inexact representation1058365
+Node: Comparing FP Values1059746
+Node: Errors accumulate1061004
+Node: Strange values1062469
+Ref: Strange values-Footnote-11065123
+Node: Getting Accuracy1065228
+Node: Try To Round1067965
+Node: Setting precision1068872
+Ref: table-predefined-precision-strings1069577
+Node: Setting the rounding mode1071461
+Ref: table-gawk-rounding-modes1071843
+Ref: Setting the rounding mode-Footnote-11075895
+Node: Arbitrary Precision Integers1076078
+Ref: Arbitrary Precision Integers-Footnote-11079288
+Node: Checking for MPFR1079441
+Node: POSIX Floating Point Problems1080931
+Ref: POSIX Floating Point Problems-Footnote-11085751
+Node: Floating point summary1085789
+Node: Dynamic Extensions1088045
+Node: Extension Intro1089642
+Node: Plugin License1090944
+Node: Extension Mechanism Outline1091757
+Ref: figure-load-extension1092208
+Ref: figure-register-new-function1093786
+Ref: figure-call-new-function1094895
+Node: Extension API Description1097010
+Node: Extension API Functions Introduction1098739
+Ref: table-api-std-headers1100633
+Node: General Data Types1105074
+Ref: General Data Types-Footnote-11114220
+Node: Memory Allocation Functions1114523
+Ref: Memory Allocation Functions-Footnote-11119240
+Node: Constructor Functions1119339
+Node: API Ownership of MPFR and GMP Values1123240
+Node: Registration Functions1124793
+Node: Extension Functions1125497
+Node: Exit Callback Functions1131071
+Node: Extension Version String1132385
+Node: Input Parsers1133080
+Node: Output Wrappers1147699
+Node: Two-way processors1152541
+Node: Printing Messages1154894
+Ref: Printing Messages-Footnote-11156105
+Node: Updating ERRNO1156258
+Node: Requesting Values1157057
+Ref: table-value-types-returned1157810
+Node: Accessing Parameters1158918
+Node: Symbol Table Access1160199
+Node: Symbol table by name1160711
+Ref: Symbol table by name-Footnote-11163912
+Node: Symbol table by cookie1164044
+Ref: Symbol table by cookie-Footnote-11168313
+Node: Cached values1168377
+Ref: Cached values-Footnote-11172009
+Node: Array Manipulation1172166
+Ref: Array Manipulation-Footnote-11173265
+Node: Array Data Types1173302
+Ref: Array Data Types-Footnote-11176120
+Node: Array Functions1176216
+Node: Flattening Arrays1181245
+Node: Creating Arrays1188293
+Node: Redirection API1193135
+Node: Extension API Variables1196152
+Node: Extension Versioning1196875
+Ref: gawk-api-version1197304
+Node: Extension GMP/MPFR Versioning1199091
+Node: Extension API Informational Variables1200795
+Node: Extension API Boilerplate1202048
+Node: Changes from API V11206178
+Node: Finding Extensions1207810
+Node: Extension Example1208385
+Node: Internal File Description1209207
+Node: Internal File Ops1213499
+Ref: Internal File Ops-Footnote-11225049
+Node: Using Internal File Ops1225197
+Ref: Using Internal File Ops-Footnote-11227628
+Node: Extension Samples1227906
+Node: Extension Sample File Functions1229475
+Node: Extension Sample Fnmatch1237600
+Node: Extension Sample Fork1239195
+Node: Extension Sample Inplace1240471
+Node: Extension Sample Ord1244137
+Node: Extension Sample Readdir1245013
+Ref: table-readdir-file-types1245802
+Node: Extension Sample Revout1247158
+Node: Extension Sample Rev2way1247755
+Node: Extension Sample Read write array1248507
+Node: Extension Sample Readfile1251781
+Node: Extension Sample Time1252912
+Node: Extension Sample API Tests1255200
+Node: gawkextlib1255708
+Node: Extension summary1258740
+Node: Extension Exercises1262588
+Node: Language History1263858
+Node: V7/SVR3.11265570
+Node: SVR41267920
+Node: POSIX1269452
+Node: BTL1270877
+Node: POSIX/GNU1271644
+Node: Feature History1278173
+Node: Common Extensions1297975
+Node: Ranges and Locales1299450
+Ref: Ranges and Locales-Footnote-11304235
+Ref: Ranges and Locales-Footnote-21304262
+Ref: Ranges and Locales-Footnote-31304497
+Node: Contributors1304720
+Node: History summary1310911
+Node: Installation1312353
+Node: Gawk Distribution1313317
+Node: Getting1313809
+Node: Extracting1314808
+Node: Distribution contents1316514
+Node: Unix Installation1324588
+Node: Quick Installation1325408
+Node: Compiling with MPFR1327948
+Node: Shell Startup Files1328654
+Node: Additional Configuration Options1329811
+Node: Configuration Philosophy1332194
+Node: Compiling from Git1334694
+Node: Building the Documentation1335253
+Node: Non-Unix Installation1336665
+Node: PC Installation1337141
+Node: PC Binary Installation1338010
+Node: PC Compiling1338903
+Node: PC Using1340081
+Node: Cygwin1343797
+Node: MSYS1345049
+Node: OpenVMS Installation1345675
+Node: OpenVMS Compilation1346356
+Ref: OpenVMS Compilation-Footnote-11347839
+Node: OpenVMS Dynamic Extensions1347897
+Node: OpenVMS Installation Details1349533
+Node: OpenVMS Running1351964
+Node: OpenVMS GNV1356101
+Node: Bugs1356856
+Node: Bug definition1357776
+Node: Bug address1361377
+Node: Usenet1364946
+Node: Performance bugs1366159
+Node: Asking for help1369175
+Node: Maintainers1371162
+Node: Other Versions1372189
+Node: Installation summary1381488
+Node: Notes1382870
+Node: Compatibility Mode1383680
+Node: Additions1384502
+Node: Accessing The Source1385447
+Node: Adding Code1386978
+Node: New Ports1394089
+Node: Derived Files1398592
+Ref: Derived Files-Footnote-11404403
+Ref: Derived Files-Footnote-21404438
+Ref: Derived Files-Footnote-31405049
+Node: Future Extensions1405163
+Node: Implementation Limitations1405833
+Node: Extension Design1407075
+Node: Old Extension Problems1408235
+Ref: Old Extension Problems-Footnote-11409807
+Node: Extension New Mechanism Goals1409868
+Ref: Extension New Mechanism Goals-Footnote-11413338
+Node: Extension Other Design Decisions1413539
+Node: Extension Future Growth1415736
+Node: Notes summary1416356
+Node: Basic Concepts1417566
+Node: Basic High Level1418251
+Ref: figure-general-flow1418533
+Ref: figure-process-flow1419235
+Ref: Basic High Level-Footnote-11422605
+Node: Basic Data Typing1422794
+Node: Glossary1426202
+Node: Copying1459081
+Node: GNU Free Documentation License1496639
+Node: Index1521762
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index dfa62c3b..6f8e26bd 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -10585,27 +10585,36 @@ Redirecting output using @samp{>}, @samp{>>}, 
@samp{|}, or @samp{|&}
 asks the system to open a file, pipe, or coprocess only if the particular
 @var{file} or @var{command} you specify has not already been written
 to by your program or if it has been closed since it was last written to.
+In other words, files, pipes, and coprocesses remain open until
+explicitly closed. All further @code{print} and @code{printf} statements
+continue to write to the same open file, pipe, or coprocess.
 @cindex troubleshooting @subentry printing
-It is a common error to use @samp{>} redirection for the first @code{print}
-to a file, and then to use @samp{>>} for subsequent output:
-# clear the file
-print "Don't panic" > "guide.txt"
-# append
-print "Avoid improbability generators" >> "guide.txt"
-@end example
-This is indeed how redirections must be used from the shell.  But in
-@command{awk}, it isn't necessary.  In this kind of case, a program should
-use @samp{>} for all the @code{print} statements, because the output file
-is only opened once. (It happens that if you mix @samp{>} and @samp{>>}
-output is produced in the expected order. However, mixing the operators
-for the same file is definitely poor style, and is confusing to readers
-of your program.)
+In the shell, when you are building up a file a line at a time, you
+first use @samp{>} to create the file, and then you use @samp{>>} for
+subsequent additions to it, like so:
+echo Name: Arnold Robbins > data
+echo Street Address: 1234 A Pretty Street, NE >> data
+echo City and State: MyTown, MyState 12345-6789 >> data
+@end example
+In @command{awk}, the @samp{>} and @samp{>>} operators are subtly
+different.  The operator you use the @emph{first time} you write to a
+file determines how @command{awk} will open (or create) the file.
+If you use @samp{>}, the file is truncated, and then all subsequent
+output appends data to the file, even if additional @code{print} or
+@code{printf} statements continue to use @samp{>}.  If you use @samp{>>}
+the first time, then existing data is not truncated, and all subsequent
+@code{print} or @code{printf} statements append data to the file.
+You should be consistent and always use the same operator for all output
+to the same file. (You can mix @samp{>} and @samp{>>}, and nothing bad
+will happen, but mixing the operators is considered to be bad style in
+@command{awk}. If invoked with the @option{--lint} option, @command{gawk}
+issues a warning when it encounters both operators being used for the
+same open file.)
 @cindex differences in @command{awk} and @command{gawk} @subentry 
implementation limitations
 @cindex implementation issues, @command{gawk} @subentry limits
diff --git a/doc/wordlist3 b/doc/wordlist3
index cc71f108..b3948fc1 100644
--- a/doc/wordlist3
+++ b/doc/wordlist3
@@ -30,6 +30,7 @@ NR
@@ -45,6 +46,7 @@ SYMTAB


Summary of changes:
 doc/ChangeLog |    3 +
 doc/ | 1022 +++++++++++++++++++++++++++++----------------------------
 doc/gawk.texi |   47 +--
 doc/wordlist3 |    2 +
 4 files changed, 548 insertions(+), 526 deletions(-)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]