Your script produces in the Output Window
the error output:
Code: Select all
An error occurred on line 14:
var newDoc = UltraEdit.createDocument();
object has no member function createDocument
. The correct function for creating a new file/document would be UltraEdit.newFile()
which does not return something.
The Output Window
Selecting everything in the new file, which is of course nothing as it is an empty file, copying nothing to clipboard, closing the new file and pasting nothing into active file would no make much sense too.
is not an array of lines of active document, but an array of opened files (documents). UltraEdit.document.length
is the number of opened files and not the number of lines in active document. There is no property with number of lines of active file because of very large files can be opened in UltraEdit also without counting lines at all which can take a lot of time.
I recommend opening the help of UltraEdit on using UltraEdit on Windows, switch to tab Index
, type in the edit field script
and double click in the list below on Scripting commands
explaining (nearly) all UltraEdit specific scripting commands (objects, functions, properties).
There can be opened also the Tag List
view from ribbon tab Layout
by checking Tags
in group Lists
and selecting the tag list group UE/UES Script Commands
. UltraEdit specific functions and properties can be inserted from this list with a double click on a list item. The caret is placed automatically where to insert something first like first function parameter or name of a variable getting assigned the return value of a function.
There can be downloaded the ZIP file FindStringsToNewFile.zip
and extracted into a directory of your choice like %APPDATA%\IDMComp\UltraEdit\Scripts
which must be created first. See also: Where should UltraEdit/UEStudio scripts be stored and where to enter the description?
Next click on ribbon tab Advanced
on command All scripts
in the group Script
and add the script FindStringsToNewFile.js
to the list of scripts with a description of your choice entered in the File Open
dialog opened for selecting the script file.
The script is ready for usage now for running it on a file containing lines of interest. Try it out by opening the data file and clicking on ribbon tab Layout
on command Play script
and next on FindStringsToNewFile.js
if there is more than one script in the list. A script execution from the list can be done also by opening Script list
view with checking on ribbon tab Layout
the item Scripts
The scripts prompts you for the string to search. There must be entered .*AUTHORIZATION SKIPPED.*
for getting all lines containing case-insensitive the string AUTHORIZATION SKIPPED
written completely into a new file.
The script contains
which can be modified to
Code: Select all
var sSearchString = ".*AUTHORIZATION SKIPPED.*";
to always use that Perl regular expression search string instead of prompting the user for a search expression.
There could be used also the following fully commented script which makes a copy of the active file and deletes in the new file all lines not
containing the string AUTHORIZATION SKIPPED
Code: Select all
if (UltraEdit.document.length > 0) // Is any file opened?
// Define environment for this script.
// UltraEdit.columnModeOff() is for UltraEdit for Window while
// UltraEdit.activeDocument.columnModeOff() is for UltraEdit for Linux/Mac.
if (typeof(UltraEdit.columnModeOff) == "function") UltraEdit.columnModeOff();
else if (typeof(UltraEdit.activeDocument.columnModeOff) == "function") UltraEdit.activeDocument.columnModeOff();
// Select everything in active file.
// Is the active file not an empty file?
// Select user clipboard 9 to prevent overwriting the clipboard of
// the operating system with the temporary data of active file.
// Copy everything in active file to user clipboard 9.
// Move caret to top of the active file just to discard the selection.
// Create a new file.
// Paste the copied data into this new file with assuming the new file
// uses the same character encoding as the active file on beginning of
// the script execution. A different line ending type is automatically
// considered by UltraEdit on paste on using the default configuration.
// Clear user clipboard 9 to free memory no longer needed.
// Make the clipboard of the operating system the active clipboard.
// Has the last line in the new file no line ending?
// Append a line ending at the end of the new file.
// UltraEdit may automatically insert also indenting spaces/tabs in
// case of the auto-indent feature is enabled and the last line in
// the file has indenting spaces/tabs. In this case delete the
// automatically appended indenting spaces/tabs.
// Move the caret from bottom to top of new file.
// Select the Perl regular expression engine as search engine.
// Define all parameters for a case-insensitive Perl regular expression
// replace all executed from top of the new file which deletes all
// lines not containing the string "AUTHORIZATION SKIPPED" in new file.
// The IF condition is for UltraEdit version 13.xx which does not have
// the search in column feature. Just the line inside the IF condition
// is needed on newer versions of UltraEdit.
if (typeof(UltraEdit.activeDocument.findReplace.searchInColumn) == "boolean")
// Run the replace for deletion of all lines not containing the string
// of interest. Each backslash must be escaped with one more backslash
// Perl regular expression engine of UltraEdit.
The forum topic How to delete all lines NOT containing specific word or string or expression?
explains the Perl regular expression used for deleting all lines not
containing AUTHORIZATION SKIPPED