Shellscript Programming
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Express Yourself! Regular Expressions Vs SAS Text String Functions Spencer Childress, Rho®, Inc., Chapel Hill, NC
PharmaSUG 2014 - Paper BB08 Express Yourself! Regular Expressions vs SAS Text String Functions Spencer Childress, Rho®, Inc., Chapel Hill, NC ABSTRACT ® SAS and Perl regular expression functions offer a powerful alternative and complement to typical SAS text string functions. By harnessing the power of regular expressions, SAS functions such as PRXMATCH and PRXCHANGE not only overlap functionality with functions such as INDEX and TRANWRD, they also eclipse them. With the addition of the modifier argument to such functions as COMPRESS, SCAN, and FINDC, some of the regular expression syntax already exists for programmers familiar with SAS 9.2 and later versions. We look at different methods that solve the same problem, with detailed explanations of how each method works. Problems range from simple searches to complex search and replaces. Programmers should expect an improved grasp of the regular expression and how it can complement their portfolio of code. The techniques presented herein offer a good overview of basic data step text string manipulation appropriate for all levels of SAS capability. While this article targets a clinical computing audience, the techniques apply to a broad range of computing scenarios. INTRODUCTION This article focuses on the added capability of Perl regular expressions to a SAS programmer’s skillset. A regular expression (regex) forms a search pattern, which SAS uses to scan through a text string to detect matches. An extensive library of metacharacters, characters with special meanings within the regex, allows extremely robust searches. Before jumping in, the reader would do well to read over ‘An Introduction to Perl Regular Expressions in SAS 9’, referencing page 3 in particular (Cody, 2004). -
Shell Scripting with Bash
Introduction to Shell Scripting with Bash Charles Jahnke Research Computing Services Information Services & Technology Topics for Today ● Introductions ● Basic Terminology ● How to get help ● Command-line vs. Scripting ● Variables ● Handling Arguments ● Standard I/O, Pipes, and Redirection ● Control Structures (loops and If statements) ● SCC Job Submission Example Research Computing Services Research Computing Services (RCS) A group within Information Services & Technology at Boston University provides computing, storage, and visualization resources and services to support research that has specialized or highly intensive computation, storage, bandwidth, or graphics requirements. Three Primary Services: ● Research Computation ● Research Visualization ● Research Consulting and Training Breadth of Research on the Shared Computing Cluster (SCC) Me ● Research Facilitator and Administrator ● Background in biomedical engineering, bioinformatics, and IT systems ● Offices on both CRC and BUMC ○ Most of our staff on the Charles River Campus, some dedicated to BUMC ● Contact: [email protected] You ● Who has experience programming? ● Using Linux? ● Using the Shared Computing Cluster (SCC)? Basic Terminology The Command-line The line on which commands are typed and passed to the shell. Username Hostname Current Directory [username@scc1 ~]$ Prompt Command Line (input) The Shell ● The interface between the user and the operating system ● Program that interprets and executes input ● Provides: ○ Built-in commands ○ Programming control structures ○ Environment -
855 Symbols & (Ampersand), 211 && (AND Operator), 608 `` (Backquotes/Backticks), 143 & (Bitwise AND) Operator, 1
index.fm Page 855 Wednesday, October 25, 2006 1:28 PM Index Symbols A & (ampersand), 211 abs() function, 117 && (AND operator), 608 Access methods, 53, 758–760 `` (backquotes/backticks), 143 ACTION attribute, 91 & (bitwise AND) operator, 140 action attribute, 389–390, 421 ~ (bitwise NOT) operator, 141 addcslashes() function, 206–208, 214 | (bitwise OR) operator, 140 Addition (+), 112 ^ (bitwise XOR) operator, 140 addslashes() function, 206–208, 214 ^ (caret metacharacter), 518, 520–521 admin_art_edit.php, 784, 793–796 " (double quote), 211 admin_art_list.php, 784 @ (error control) operator, 143–145 admin_artist_edit.php, 784, 788–789 > (greater than), 211, 608, 611-612 admin_artist_insert.php, 784, 791–792 << (left shift) operator, 141 admin_artist_list.php, 784, 786–787, < (less than), 211, 608, 611-612 796 * metacharacter, 536–538 admin_footer.php, 784 !, NOT operator, 608 admin_header.php, 784, 803 < operator, 608, 611–612 admin_login.php, 784, 797, 803 <= operator, 608 Advisory locking, 474 <>, != operator, 608–609 Aliases, 630–631 = operator, 608–609 Alphabetic sort of, 299–300 > operator, 608, 611–612 Alphanumeric word characters, metasymbols -> operator, 743–744 representing, 531–533 >= operator, 608 ALTER command, 631 || (OR operator), 130–132, 608 ALTER TABLE statement, 620, 631–633 >> (right shift) operator, 141 Alternation, metacharacters for, 543 ' (single quote), 211, 352–353, 609 Anchoring metacharacters, 520–523 % wildcard, 613–614 beginning-of-line anchor, 520–523 >>> (zero-fill right shift) operator, end-of-line anchor, -
Perl Regular Expressions 102
NESUG 2006 Posters Perl Regular Expressions 102 Kenneth W. Borowiak, Howard M. Proskin & Associates, Inc., Rochester, NY ABSTRACT Perl regular expressions were made available in SAS® in Version 9 through the PRX family of functions and call routines. The SAS community has already generated some literature on getting started with these often-cryptic, but very powerful character functions. The goal of this paper is to build upon the existing literature by exposing some of the pitfalls and subtleties of writing regular expressions. Using a fictitious clinical trial adverse event data set, concepts such as zero-width assertions, anchors, non-capturing buffers and greedy quantifiers are explored. This paper is targeted at those who already have a basic knowledge of regular expressions. Keywords: word boundary, negative lookaheads, positive lookbehinds, zero-width assertions, anchors, non-capturing buffers, greedy quantifiers INTRODUCTION Regular expressions enable you to generally characterize a pattern for subsequent matching and manipulation of text fields. If you have you ever used a text editor’s Find (-and Replace) capability of literal strings then you are already using regular expressions, albeit in the most strict sense. In SAS Version 9, Perl regular expressions were made available through the PRX family of functions and call routines. Though the Programming Extract and Reporting Language is itself a programming language, it is the regular expression capabilities of Perl that have been implemented in SAS. The SAS community of users and developers has already generated some literature on getting started with these often- cryptic, but very powerful character functions. Introductory papers by Cassell [2005], Cody [2006], Pless [2005] and others are referenced at the end of this paper. -
Bash Crash Course + Bc + Sed + Awk∗
Bash Crash course + bc + sed + awk∗ Andrey Lukyanenko, CSE, Aalto University Fall, 2011 There are many Unix shell programs: bash, sh, csh, tcsh, ksh, etc. The comparison of those can be found on-line 1. We will primary focus on the capabilities of bash v.4 shell2. 1. Each bash script can be considered as a text file which starts with #!/bin/bash. It informs the editor or interpretor which tries to open the file, what to do with the file and how should it be treated. The special character set in the beginning #! is a magic number; check man magic and /usr/share/file/magic on existing magic numbers if interested. 2. Each script (assume you created “scriptname.sh file) can be invoked by command <dir>/scriptname.sh in console, where <dir> is absolute or relative path to the script directory, e.g., ./scriptname.sh for current directory. If it has #! as the first line it will be invoked by this command, otherwise it can be called by command bash <dir>/scriptname.sh. Notice: to call script as ./scriptname.sh it has to be executable, i.e., call command chmod 555 scriptname.sh before- hand. 3. Variable in bash can be treated as integers or strings, depending on their value. There are set of operations and rules available for them. For example: #!/bin/bash var1=123 # Assigns value 123 to var1 echo var1 # Prints ’var1’ to output echo $var1 # Prints ’123’ to output var2 =321 # Error (var2: command not found) var2= 321 # Error (321: command not found) var2=321 # Correct var3=$var2 # Assigns value 321 from var2 to var3 echo $var3 # Prints ’321’ to output -
Shell Script Getopts Example
Shell Script Getopts Example Gail is constrainedly cryoscopic after delegable Hilbert sag his parcloses illuminatingly. Gonzales often tootle irresistibly when tripersonal Giordano discomposed dissonantly and buffer her Barbarossa. Robert misdraws rompishly. Find that getopts script example we use later will contain whitespace separation with command Instantly share code, notes, and snippets. OPTARG is set to the period character found. They cease in many cases unneeded and brief fact that cartoon always press them its just like matter of personal coding style. File or directory or found. Operator precedence is used when there within five is more arguments. Typically, shell scripts use getopts to parse arguments passed to them. There did many ways to against your remedy environment. Nothing gets printed when no command line options are provided. The return status is zero unless an outcome is encountered while determining the name avid the he directory within an invalid option is supplied. The exit code will be success failure. Log in charge use details from one require these accounts. How does log lumber and cpu usage by an application? Now consider running it bore an unsupported option. No need only pass the positional parameters through to borrow external program. How can I check took a directory exists in a candy shell script? What extent its purpose? When optional, the fashion can buckle on led off additional functionality, as ugly a boolean option. In those cases, it contains a pointer to that parameter. How environment check ride a variable is set to Bash? Connect and deploy knowledge write a single location that is structured and fatigue to search. -
Research Computing and Cyberinfrastructure Team
Research Computing and CyberInfrastructure team ! Working with the Linux Shell on the CWRU HPC 31 January 2019 7 February 2019 ! Presenter Emily Dragowsky KSL Data Center RCCI Team: Roger Bielefeld, Mike Warfe, Hadrian Djohari! Brian Christian, Emily Dragowsky, Jeremy Fondran, Cal Frye,! Sanjaya Gajurel, Matt Garvey, Theresa Griegger, Cindy Martin, ! Sean Maxwell, Jeno Mozes, Nasir Yilmaz, Lee Zickel Preface: Prepare your environment • User account ! # .bashrc ## cli essentials ! if [ -t 1 ] then bind '"\e[A": history-search-backward' bind '"\e[B": history-search-forward' bind '"\eOA": history-search-backward' bind '"\eOB": history-search-forward' fi ! This is too useful to pass up! Working with Linux • Preamble • Intro Session Linux Review: Finding our way • Files & Directories: Sample work flow • Shell Commands • Pipes & Redirection • Scripting Foundations • Shell & environment variables • Control Structures • Regular expressions & text manipulation • Recap & Look Ahead Rider Cluster Components ! rider.case.edu ondemand.case.edu University Firewall ! Admin Head Nodes SLURM Science Nodes Master DMZ Resource ! Data Manager Transfer Disk Storage Nodes Batch nodes GPU nodes SMP nodes Running a job: where is it? slide from Hadrian Djohari Storing Data on the HPC table from Nasir Yilmaz How data moves across campus • Buildings on campus are each assigned to a zone. Data connections go from every building to the distribution switch at the center of the zone and from there to the data centers at Kelvin Smith Library and Crawford Hall. slide -
Quick Tips and Tricks: Perl Regular Expressions in SAS® Pratap S
Paper 4005-2019 Quick Tips and Tricks: Perl Regular Expressions in SAS® Pratap S. Kunwar, Jinson Erinjeri, Emmes Corporation. ABSTRACT Programming with text strings or patterns in SAS® can be complicated without the knowledge of Perl regular expressions. Just knowing the basics of regular expressions (PRX functions) will sharpen anyone's programming skills. Having attended a few SAS conferences lately, we have noticed that there are few presentations on this topic and many programmers tend to avoid learning and applying the regular expressions. Also, many of them are not aware of the capabilities of these functions in SAS. In this presentation, we present quick tips on these expressions with various applications which will enable anyone learn this topic with ease. INTRODUCTION SAS has numerous character (string) functions which are very useful in manipulating character fields. Every SAS programmer is generally familiar with basic character functions such as SUBSTR, SCAN, STRIP, INDEX, UPCASE, LOWCASE, CAT, ANY, NOT, COMPARE, COMPBL, COMPRESS, FIND, TRANSLATE, TRANWRD etc. Though these common functions are very handy for simple string manipulations, they are not built for complex pattern matching and search-and-replace operations. Regular expressions (RegEx) are both flexible and powerful and are widely used in popular programming languages such as Perl, Python, JavaScript, PHP, .NET and many more for pattern matching and translating character strings. Regular expressions skills can be easily ported to other languages like SQL., However, unlike SQL, RegEx itself is not a programming language, but simply defines a search pattern that describes text. Learning regular expressions starts with understanding of character classes and metacharacters. -
Context-Free Grammar for the Syntax of Regular Expression Over the ASCII
Context-free Grammar for the syntax of regular expression over the ASCII character set assumption : • A regular expression is to be interpreted a Haskell string, then is used to match against a Haskell string. Therefore, each regexp is enclosed inside a pair of double quotes, just like any Haskell string. For clarity, a regexp is highlighted and a “Haskell input string” is quoted for the examples in this document. • Since ASCII character strings will be encoded as in Haskell, therefore special control ASCII characters such as NUL and DEL are handled by Haskell. context-free grammar : BNF notation is used to describe the syntax of regular expressions defined in this document, with the following basic rules: • <nonterminal> ::= choice1 | choice2 | ... • Double quotes are used when necessary to reflect the literal meaning of the content itself. <regexp> ::= <union> | <concat> <union> ::= <regexp> "|" <concat> <concat> ::= <term><concat> | <term> <term> ::= <star> | <element> <star> ::= <element>* <element> ::= <group> | <char> | <emptySet> | <emptyStr> <group> ::= (<regexp>) <char> ::= <alphanum> | <symbol> | <white> <alphanum> ::= A | B | C | ... | Z | a | b | c | ... | z | 0 | 1 | 2 | ... | 9 <symbol> ::= ! | " | # | $ | % | & | ' | + | , | - | . | / | : | ; | < | = | > | ? | @ | [ | ] | ^ | _ | ` | { | } | ~ | <sp> | \<metachar> <sp> ::= " " <metachar> ::= \ | "|" | ( | ) | * | <white> <white> ::= <tab> | <vtab> | <nline> <tab> ::= \t <vtab> ::= \v <nline> ::= \n <emptySet> ::= Ø <emptyStr> ::= "" Explanations : 1. Definition of <metachar> in our definition of regexp: Symbol meaning \ Used to escape a metacharacter, \* means the star char itself | Specifies alternatives, y|n|m means y OR n OR m (...) Used for grouping, giving the group priority * Used to indicate zero or more of a regexp, a* matches the empty string, “a”, “aa”, “aaa” and so on Whi tespace char meaning \n A new line character \t A horizontal tab character \v A vertical tab character 2. -
K5917: Using Regular Expressions in a Health Monitor Receive String
K5917: Using regular expressions in a health monitor receive string Non-Diagnostic Original Publication Date: Oct 20, 2015 Update Date: Aug 24, 2021 Topic Some BIG-IP application health monitors, such as the HTTP monitor, include a Receive String field. This field specifies a string for comparison with the server response. You can specify a regular expression in that field to provide some flexibility in matching an expected response from a healthy server. Health monitors that support regular expressions include TCP, HTTP, HTTPS, and User Datagram Protocol (UDP). Regular expressions provide the flexibility for identifying strings of text that are of interest, such as certain characters, words, or a pattern of characters. With some exceptions, health monitors on BIG-IP systems support the use of POSIX Extended Regular Expressions (ERE). ERE syntax treats most characters as literals, meaning that they match only themselves, and defines metacharacters, which can be used to represent special characters, multiple characters, or a sequences of characters. To reduce operating overhead for the BIG-IP system, F5 recommends that, whenever possible, you use static strings for monitoring. Using static strings instead of regular expressions for monitoring is simpler and more efficient. However, the performance impact is minimal in comparison to the administrative flexibility offered from using regular expressions. For example, your HTTP health monitor requests the /admin/monitor.html page from the web server, which invokes a simple local script. The script checks whether vital local operating parameters, such as connections, memory, processor, or disk space, are within acceptable limits. If so, the script returns the monitor.html page, which includes a single line of body text that varies for each server, based on the server name: Server1: OK Server2: OK Server3: OK If you do not use a regular expression to match this response, you must create three separate monitors, each with a different receive string, and ensure the correct monitor is applied to each server. -
String Search & Pattern Matching
String Search & Pattern Matching Wednesday, October 23, 2008 Reading: Stoughton 3.14, Kozen Chs. 7-8 CS235 Languages and Automata Department of Computer Science Wellesley College Some Applications of Regular Languages Today: o Efficient string searching o Pattern matching with regular expressions (example: Unix grep utility) Tomorrow: o Lexical analysis (a.k.a. scanning, tokenizing) in a compiler (example: ML-Lex). Pattern Matching 21-2 Naïve String Searching How to search for abbaba in abbabcabbabbaba? a b b a b c a b b a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a a b b a b a Pattern Matching 21-3 More Efficient String Searching Knuth-Morris-Pratt algorithm: construct a DFA for searched-for string, and use it to do searching. b,c a a b a a b b a b a c c b,c c c How to construct this DFA automatically? a b b a b c a b b a b b a b a a b b a b a a b b a b a a b b a b a Pattern Matching 21-4 Pattern Matching with Regular Expressions Can turn any regular expression (possibly extended with complement, intersection, and difference) into a DFA and use it for string searching. -
1 Introduction to Shell Programming
1 Introduction to Shell Programming This lecture is prepared for beginners who wish to learn the basics of shell scripting/programming plus introduction to power tools such as awk, sed, etc. 1.1 What is Linux Shell? • In Operating System, there is special program called Shell. Shell ac- cepts your instruction or commands in English (mostly) and if its a valid command, it is passed to kernel. • Shell is a user program or it's a environment provided for user interac- tion. • Shell is an command language interpreter that executes commands read from the standard input device (keyboard) or from a file. • Shell is not part of system kernel, but uses the system kernel to execute programs, create files etc. • To find all available shells in your system type following command: $ cat /etc/shells • Note that each shell does the same job, but each understand a different command syntax and provides different built-in functions. • In MS-DOS, Shell name is COMMAND.COM which is also used for same purpose, but it's not as powerful as our Linux Shells are! • To find your current shell type following command $ echo $SHELL • To use shell (You start to use your shell as soon as you log into your system) you have to simply type commands. 1 1.2 What is Shell Script ? • Normally shells are interactive. It means shell accept command from you (via keyboard) and execute them. • But if you use command one by one (sequence of 'n' number of com- mands) , the you can store this sequence of command to text file and tell the shell to execute this text file instead of entering the commands.