Category Archives: Linux

SED AND AWK IN LINUX

SED and AWK in Linux

The Linux’s ecosystem has two other very useful and powerful tools for patterns search: sed that stands for stream editor, and awk that is named by the names of its creators, Aho, Weinberger, and Kerningham. In this article we are going to explain, what is the major difference? Which is the best usage for each one of the two? So, let’s dive deep in.

SED

A fast stream editor, is able to search for a pattern and apply the given changes and/or commands; still easy to combine in sophisticated filters, but serving in different aim; modifying the text in the stream. Its key usage consists of editing in-memory a stream according to the given pattern.

AWK

A slackly typed programming language for stream processing, where the basic unit is the String (intended as an array of characters) that can be 1. Matched 2. Substituted and 3. Worked around most of the times, it is not needed to combine awk with other filters, since its reporting capabilities are very powerful (the printf built-in function allows format the output text as in C). Its main usage consists fine-grained (variables can be defined and modified incrementally) and programmatic manipulations (flow control statements) to the input stream.

According to the above definitions, the two tools serve different purposes but it might be used in combinations, and as said work in matching patterns, but, there is still no net difference between sed and awk so let’s try to clarify by examples.

AWK_SED

HOW DO I FIND ALL FILES CONTAINING SPECIFIC TEXT ON LINUX?

How do I find all files containing specific text on Linux?

grep -rnw ‘/path/to/somewhere/’ -e ‘pattern’
-r or -R is recursive,
-n is line number, and
-w stands for match the whole word.
-l (lower-case L) can be added to just give the file name of matching files.

Along with these, –exclude, –include, –exclude-dir flags could be used for efficient searching:
This will only search through those files which have .c or .h extensions:
grep –include=\*.{c,h} -rnw ‘/path/to/somewhere/’ -e “pattern”
This will exclude searching all the files ending with .o extension:
grep –exclude=*.o -rnw ‘/path/to/somewhere/’ -e “pattern”
For directories it’s possible to exclude a particular directory(ies) through–exclude-dirparameter.
For example, this will exclude the dirs dir1/, dir2/ and all of them matching *.dst/:
grep –exclude-dir={dir1,dir2,*.dst} -rnw ‘/path/to/somewhere/’ -e “pattern”

IS ARTIFACTORY WELL SUITED FOR C/C++ ARTIFACTS TARGETING WIN, LINUX AND OS X PLATFORMS? E.G. .LIB, .EXE, .A, .SO, .DLL

Is Artifactory well suited for C/C++ artifacts targeting Win, Linux and OS X platforms? E.g. .lib, .exe, .a, .so, .dll

Of course. Artifactory is well-suited for any binary file (i.e. not text), and .lib, .exe, .a, .so and .dll are all binaries. We don’t have a special type of repository for those files because the repository types are per indexing system; not per file type. It’s really about which tool you use to deploy and resolve those files. For example, if you use Gradle, you’ll need to a repository in Maven format, or if you just issue HTTP calls from your scripts, a Generic repo will be the best fit.