Sponsored Content
Top Forums Shell Programming and Scripting while read loop preserving leading whitespace Post 51977 by zazzybob on Monday 7th of June 2004 11:01:04 AM
Old 06-07-2004
while read loop preserving leading whitespace

Hi all,

I've been trying to get this to work for ages to no avail. I've searched this site and googled but cannot find a satisfactory answer.

I've got a while loop, like this
Code:
while read line
do
    echo "$line"
done < file_name

Now, my problem is that most of the lines in the file have indentation (this program parses indented source code).

The indentation is lost during the loop and everything appears left-justified.

Now, am I missing something *really* silly here?

Peace,
ZB
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh - read file with leading spaces

Hi, Could someone has any suggestions on this? When read a line from a file, I need to check the first char in the line, it could be a space or any char. But the leading spaces are removed by read. Thanks. (2 Replies)
Discussion started by: momi
2 Replies

2. Shell Programming and Scripting

Preserving whitespace in a for loop

I obviously haven't learned my lesson with shell and whitespace. find /path/to/some/where/ -name "*.pdf" | awk '{print $5}'| uniq -d results: some Corporation other Corporate junk firmx Works fine from cmdline but the whitespace turns into another FS in a for loop. for... (7 Replies)
Discussion started by: s_becker
7 Replies

3. Shell Programming and Scripting

Whitespace in filenames in for loop in bash script

I'm trying to search all .odt files in a directory for a string in the text of the file. I've found a bash script that works, except that it can't handle whitespace in the filenames. #!/bin/bash if ; then echo "Usage: searchodt searchterm" exit 1 fi for file in $(ls *.odt); do ... (4 Replies)
Discussion started by: triplemaya
4 Replies

4. Shell Programming and Scripting

Preventing whitespace to be a delimiter in a for loop (bash/sh)

Hi, I have a for loop which iterates over a list of strings, separated by whitespace: $ list="1 2 3" $ for i in $list; do echo $i; done 1 2 3 I now want to introduce some strings containing whitespace themselves ... This is straightforward if I directly iterate over the list: $ for... (4 Replies)
Discussion started by: kkkoehne
4 Replies

5. Shell Programming and Scripting

How to match (whitespace digits whitespace) sequence?

Hi Following is an example line. echo "192.22.22.22 \"33dffwef\" 200 300 dsdsd" | sed "s:\(\ *\ \):\1:" I want it's output to be 200 However this is not the case. Can you tell me how to do it? I don't want to use AWK for this. Secondly, how can i fetch just 300? Should I use "\2"... (3 Replies)
Discussion started by: shahanali
3 Replies

6. Shell Programming and Scripting

Preserving values with for loop for later use

Below is the issue I am having. I have a few variables which have certain values in them like var1=23 var2=46 var3=78 etc... I want to save these values with the help of a for loop in a single variable so that I can use it later,beacuse a few lines down the script, some of these... (3 Replies)
Discussion started by: Elizabeth H
3 Replies

7. UNIX for Dummies Questions & Answers

[Solved] How remove leading whitespace from xml (sed /awk?)

Hi again I have an xml file and want to remove the leading white space as it causes me issues later in my script I see sed is possible but cant seem to get it to work I tried sed 's/^ *//' file.xml output <xn:VsDataContainer id="1U104799" modifier="update"> ... (10 Replies)
Discussion started by: aniquebmx
10 Replies

8. Shell Programming and Scripting

Read line, issue with leading - and {}'s

Heyas With my forum search term 'issue with leading dash' i found 2 closed threads which sadly didnt help me. Also me was to eager to add the script, that i didnt properly test, and just now figured this issue. So i have this code: if ] then while read line do line="${line/-/'\-'}"... (7 Replies)
Discussion started by: sea
7 Replies

9. Shell Programming and Scripting

[BASH] read 'line' issue with leading tabs and virtual line breaks

Heyas I'm trying to read/display a file its content and put borders around it (tui-cat / tui-cat -t(ypwriter). The typewriter-part is a 'bonus' but still has its own flaws, but thats for later. So in some way, i'm trying to rewrite cat using bash and other commands. But sadly it fails on... (2 Replies)
Discussion started by: sea
2 Replies

10. Shell Programming and Scripting

REGEX to separate paths by whitespace and do a loop

I am trying to do in a single line to take a list of paths separated by whitespace and then loop thru all the paths that were wrote but my regex is not working, I have echo {3} | sed 's/ //g' | while read EACHFILE do ..... But for some reason is only taking always the first path that I... (7 Replies)
Discussion started by: jorgejac
7 Replies
ntextIndent(n)					       ntext Indentation for the Text Widget					    ntextIndent(n)

__________________________________________________________________________________________________________________________________________________

NAME
ntextIndent - ntext Indentation for the Text Widget SYNOPSIS
package require Tcl 8.5 package require Tk 8.5 package require ntext ?0.81? _________________________________________________________________ DESCRIPTION
The ntext package provides a binding tag named Ntext for use by text widgets in place of the default Text binding tag. Tk's text widget may be configured to wrap lines of text that are longer than the width of the text area, a feature that is familiar from text editors and word processors. A complete line of text (delimited by newlines, or by the beginning or end of the document) is called a "logical line". When a logical line is wrapped onto more than one line of the display area, these fragments of the logical line are called "display lines". If a logical line begins with whitespace, then wrapped display lines begin further to the left than the first display line, which can make the text layout untidy and difficult to read. The Ntext binding tag provides facilities so that a text widget in -wrap word mode will automatically indent display lines (other than the first) to match the initial whitespace of the first display line. This indentation is available to text widgets only in -wrap word mode. CONFIGURATION OPTIONS
The behavior of Ntext may be configured application-wide by setting the values of a number of namespace variables: ::ntext::classicWrap o 0 - selects Ntext behaviour, i.e. display lines are indented to match the initial whitespace of the first display line of a logical line. No other action is required if this option, and the text widget's -wrap option, are set before any text is entered in the widget, and if text is entered and edited only by the mouse and keyboard. If, instead, text is manipulated by the script, or if the text widget's -wrap option or the value of ::ntext::classicWrap are changed while the widget holds text, then calls to ntext functions are needed to alter the indentation. See the section INDENTING DISPLAY LINES for detailed instructions. o 1 - (default value) selects classic Text behaviour, i.e. no indentation. Advanced Use ::ntext::newWrapRegexp o the value is a regexp pattern that determines the character of a logical line to which display lines other than the first will be aligned. The default value, [^[:space:]], ensures alignment with the first non-whitespace character. INDENTING DISPLAY LINES
To use Ntext 's display line indentation: [1] Set the variable ::ntext::classicWrap to 0 (default value is 1). This enables bindings that will preserve indentation whenever the user modifies the widget contents using the keyboard and mouse. If the widget already holds text, call ::ntext::wrapIndent to ini- tialise indentation. Further instructions apply if the program changes the widget's contents, wrap configuration, or indent configuration. [2] The program can change the text contents, e.g. by the .text insert command. Such a change does not trigger a window binding, so the program should explicitly call function ::ntext::wrapIndent after inserting text. [3] Auto-indentation occurs only if the widget is in -wrap word mode. If the program changes to or from -wrap word when the widget is not empty, it should call ::ntext::wrapIndent to format the widget's text. [4] If indentation is used, and then switched off by setting ::ntext::classicWrap to 1, call ::ntext::wrapIndent to remove indentation. FUNCTIONS
::ntext::wrapIndent textWidget ?index1? ?index2? o Adjust the indentation of a text widget. Different cases are discussed below. ::ntext::wrapIndent textWidget o Adjust the indentation of all the text in text widget textWidget. ::ntext::wrapIndent textWidget index1 o Adjust the indentation of a single logical line of a text widget - the line of textWidget that contains the index index1. ::ntext::wrapIndent textWidget index1 index2 o Adjust the indentation of a range of logical lines of a text widget - the lines of textWidget that contain indices index1 to index2. Usage o ::ntext::wrapIndent should be called only if the script changes the widget's contents or display properties. If the contents of the widget have been modified by the keyboard or mouse, it is not necessary for the script to call ::ntext::wrapIndent because the appropriate calls are made automatically by the Ntext bindings. o The script should normally call ::ntext::wrapIndent if, for example, the script changes one of the following when the widget is not empty: the value of ::ntext::classicWrap, or the widget's -wrap status, or the widget's tab spacing, or the font size, or the wid- get's contents. o A call of the form ::ntext::wrapIndent textWidget will always suffice, but if changes are needed only to certain lines, it is more efficient to specify those lines with the optional arguments ?index1?, ?index2?. o If the widget is in -word wrap mode, and if ::ntext::classicWrap is set to 0, ::ntext::wrapIndent will apply indentation to the log- ical lines within the range specified by the function's arguments. o In other cases, i.e. if the widget is in -word char or -word none mode, or if ::ntext::classicWrap is set to 1, ::ntext::wrapIndent will remove the indentation of the logical lines within the range specified by the function's arguments. EXAMPLES
To switch on Ntext 's indentation and use it in widget .t: package require ntext set ::ntext::classicWrap 0 text .t -wrap word bindtags .t {.t Ntext . all} To decide later to switch off Ntext 's indentation: set ::ntext::classicWrap 1 ::ntext::wrapIndent .t To decide later to switch Ntext 's indentation back on: set ::ntext::classicWrap 0 ::ntext::wrapIndent .t 1.0 end To inject some text into the widget: set foo [.t index end] ::ntext::wrapIndent .t $foo end To switch to -wrap char mode: ::ntext::wrapIndent .t SEE ALSO
bindtags, ntext, re_syntax, regexp, text KEYWORDS
bindtags, re_syntax, regexp, text ntext 0.81 ntextIndent(n)
All times are GMT -4. The time now is 08:11 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy