Comments on Simplest way of stripping leading/trailing whitespace from file or program output
Parent
Simplest way of stripping leading/trailing whitespace from file or program output
+4
−1
What is the simplest shell idiom for stripping leading and trailing whitespace from a file or program output? Ideally I am looking for the equivalent of trim
or strip
methods in some languages.
The ideal solution should
- skip empty lines at the beginning and end of the file/stream
- provide an option to also strip leading and trailing whitespace from all non-empty lines
Post
+0
−0
I'll post this as an example of what I'm looking to do.
The following script:
import sys
a = sys.stdin.read()
b = a.strip()
c = map(lambda s: s.strip(), b.splitlines())
for s in c:
print(s)
Will remove:
- Whitespace at the beginning and end of the file or stream
- Whitespace at the beginning and end of each line (except for the legitimate line ending, of course)
$ echo -e " hello\nmellow \nworld\n\n\n" | python trim.py | bat -A
───────┬─────────────
│ STDIN
│ Size: -
───────┼─────────────
1 │ hello␊
2 │ mellow␊
3 │ world␊
───────┴─────────────
Caveats:
- In practice, you would probably want to add this script to your shell's
PATH
to use it - It might be worth adding some CLI flags to control which whitespace exactly is removed
- The performance (especially memory usage) of this is probably bad, it does not efficiently handle one line at a time (and maintain a "consecutive blanks" buffer for removing trailing whitespace)
This seems like such an obvious task that there must surely be a Unix program for it already. However I could not find anything better than a Python script or sed
with a somewhat-complex regex.
1 comment thread