<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel Taiwo</title>
    <description>The latest articles on DEV Community by Emmanuel Taiwo (@devbird007).</description>
    <link>https://dev.to/devbird007</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F913190%2F700b3601-4937-46e0-b241-0b80c6a3438c.jpg</url>
      <title>DEV Community: Emmanuel Taiwo</title>
      <link>https://dev.to/devbird007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devbird007"/>
    <language>en</language>
    <item>
      <title>Understanding Block Storage and Object Storage</title>
      <dc:creator>Emmanuel Taiwo</dc:creator>
      <pubDate>Sun, 07 Apr 2024 07:33:29 +0000</pubDate>
      <link>https://dev.to/devbird007/understanding-block-storage-and-object-storage-1jbj</link>
      <guid>https://dev.to/devbird007/understanding-block-storage-and-object-storage-1jbj</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;In the world of IT, there are different storage solutions available to satisfy the different storage needs businesses have for their data. Let us look at two popular storage solutions, &lt;strong&gt;Block Storage&lt;/strong&gt; and &lt;strong&gt;Object Storage&lt;/strong&gt;, go over their strengths and weaknesses, and see how they compare to each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  Block Storage
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94dw1xajo5bt7wm1llo8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94dw1xajo5bt7wm1llo8.png" alt="block image" width="508" height="432"&gt;&lt;/a&gt;&lt;br&gt;
Block storage is a traditional storage format wherein data is broken up into pieces and stored inside blocks of fixed equal sizes. These blocks come with unique identifiers and very limited metadata.&lt;/p&gt;

&lt;p&gt;The unique identifiers are important because they allow for the blocks to be stored across multiple physical storage devices in a network instead of being stored on just one device. They also make it possible for the blocks to be easily tracked and reassembled when a user wants to access that data.&lt;/p&gt;

&lt;p&gt;The software used to provision, divide, and track these blocks (i.e. the software used to manage this storage format) is typically completely separate from the physical storage device(s). These software tools are referred to as block storage management tools. Some examples of them are:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Elastic Block Store (EBS)
&lt;/li&gt;
&lt;li&gt;DigitalOcean Volumes Block Storage&lt;/li&gt;
&lt;li&gt;Serverspace Block Storage&lt;/li&gt;
&lt;li&gt;Vultr Block Storage&lt;/li&gt;
&lt;li&gt;Azure Disk Storage
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Block storage volumes can be attached to a computer locally, connected over a SAN (Storage Area Network) or utilized in a cloud environment. Communication between the computer and the block storage device is usually done via storage protocols like FC (Fibre Channel), FCoE (Fibre Channel over Ethernet), iSCSI (Internet Small Computers System Interface), etc.&lt;/p&gt;

&lt;p&gt;Block storage volumes provisioned remotely are configured to be like individual hard drives and are usually accessed at the OS level.&lt;/p&gt;

&lt;p&gt;A block storage volume in a cloud environment will typically be decoupled from its server, and this key feature allows you to shut down a server and still retain the data in its storage volume which can then be reattached to another server, all the while incurring zero data loss.&lt;/p&gt;

&lt;p&gt;Block storage does not come with built-in resiliency measures but this can be solved by using erasure coding, RAID, etc., to achieve data redundancy, increased performance and other benefits. These measures may be deployed generally or specifically for mission-critical workloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages of Block Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Block storage volumes are flexible. This means they can be configured to serve a variety of business needs. You can format it with a file system like FAT32, EXT 3, EXT 4, and NTFS. You can set up a database to write straight to your block storage device. You can connect multiple block storage devices to achieve a RAID (Redundant Array of Independent Disks) volume.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Boot volumes are block volumes that have been configured to boot an OS for the server they are attached to, and this is a very important feature in the cloud space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block storage is known for providing consistently high IOPS (Input/Output per Second).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data delivery with reliable low latency is guaranteed with block storage. However, a factor that may affect this is the physical distance between the block storage volume and the application using it, with greater distances leading to higher latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With block storage, you can make edits to specific data blocks without having to re-upload the entire data file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It allows for simple management of access privileges.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Disadvantages of Block Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Block storage is a relatively more costly form of storage. This is because it demands significant investment upfront, along with a highly skilled maintenance staff. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While block storage is highly scalable, when it begins to scale to terabytes and beyond, its complexity also increases, making it harder to locate specific data files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block storage’s limited metadata capabilities make it impossible to perform advanced search operations.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Use cases for Block Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Transactional databases and relational databases in general require low latency, high IOPs data delivery and the ability to perform incremental updates to data files. Block storage excels in these areas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mission-critical workloads are often run with block storage because of its high performance and reliably swift data delivery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Virtual machines require boot volumes and general block storage volumes to be able to function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block storage volumes can be organized into RAID volumes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block storage is necessary for programs that need server-side processing such as programs written in .NET, Java, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block storage is very instrumental when working with containers because block volumes allow you to preserve a container's data beyond the container’s typical lifespan.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Object Storage
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0uiexom96fus6gz626q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn0uiexom96fus6gz626q.png" alt="object storage" width="392" height="432"&gt;&lt;/a&gt;&lt;br&gt;
Object storage is a more recent form of data storage that rose to popularity in the early 2000s because of how well it helped enterprises around the world to store and manage the voluminous amounts of unstructured data being generated as a result of the growing internet. Trillions of data units in a variety of formats are generated on the internet every year and around 80% of that data is unstructured. &lt;/p&gt;

&lt;p&gt;With object storage, each data file is stored wholly inside a distinct object, and these objects, which could number in the millions or even billions, are organized in a flat-file structure (as opposed to a hierarchy) and stored in a single-level repository.  &lt;/p&gt;

&lt;p&gt;The abstraction of some of the lower levels of storage is one of the core tenets of object storage. Lower-level storage tasks like creating and managing storage volumes to make the most of disk space or configuring RAID levels to handle disk failure no longer need to be carried out. As a result, rather than accessed as blocks, data is accessed and controlled as objects. An object typically contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A particular data file.&lt;/li&gt;
&lt;li&gt;Metadata which provides the necessary information about the data file in the object.&lt;/li&gt;
&lt;li&gt;A Globally Unique Identifier (GUID)&lt;/li&gt;
&lt;li&gt;Attributes: these provide information about the object itself, information about what users can download the object, delete the object, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A key function of object storage is its customizable metadata. Tthere is no limit to the amount or nature of contextual information about the data that can be added to it. The size of the metadata of a data file can even be larger than the size of the data file itself. This then allows for a more thorough classification and management of the data files which prove important when advanced search and analytics operations need to be undertaken.&lt;/p&gt;

&lt;p&gt;These objects are usually accessed via an API (Application Programming Interface) or directly by HTTP(S), they are tracked down by their GUIDs and the data delivery is done by TCP/IP. This ensures that the ease of accessing individual data files remains relatively the same irrespective of the scale of the entire storage space. &lt;/p&gt;

&lt;p&gt;And object storage is highly scalable, you could scale your storage up to even petabytes and beyond while still maintaining data integrity. You scale out simply by adding more nodes to your storage cluster and will usually only be required to pay for the storage space you need.&lt;/p&gt;

&lt;p&gt;Object storage has inbuilt resiliency measures to protect your data. Data stored in objects are replicated multiple times and stored across several storage devices, so your data will always be accessible to you even if there is a fault with one or even several of these storage devices. In case of a corruption of one object, you can simply access one of the separately stored copies. This guarantees high availability of your data.&lt;/p&gt;

&lt;p&gt;You can also enable object versioning, which is a feature that lets you track many different versions of your data. In the case of accidental deletions or updates, you can simply access the previous versions. Though under normal circumstances, the most important version to your business or project will be the latest version of the object.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages of Object Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It provides limitless scalability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Its flat-file structure allows for easy and quick retrieval of data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Its powerful metadata capabilities allow for extensive and detailed search and analytics operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It comes with inbuilt resiliency protocols to ensure high availability of your data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object storage is more cost-effective than the other storage solutions on the market.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object storage has the added benefit of abstracting away the maintenance of the underlying physical storage devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object storage allows for versioning and its attendant benefits.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Disadvantages of Object Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Objects in object storage are immutable. THis means if you try to make changes to a data file in an object, you would have to re-upload the new file with its changes to a new object. For this reason, it is a terrible choice for storing data that requires consistent updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Its performance is relatively slower than other storage solutions, this is why it is used mostly for cold storage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object storage cannot be accessed directly at the OS level without significant degradation in performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Use cases for Object Storage
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Object storage is extremely useful in the field of big data analytics, this is due to its high scalability and limitless metadata functions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IoT (Internet of Things); object storage is extremely useful for storing and archiving the enormous amounts of unstructured data generated by IoT devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object storage makes it easy to store, scale and manage your image files, audio files and other forms of media files with relative ease. It is a popular choice among social media companies, file-sharing sites and streaming services for this very reason.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is extremely useful in disaster recovery plans, this is owing to its inbuilt resiliency protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s a safe and cost-effective option for storing backups and archived files that will be accessed infrequently. In essence, it’s a great choice for cold storage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Most object storage services can also deliver data to your users publicly, this is why it makes for a great choice when looking to host static websites.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Block Storage vs Object Storage
&lt;/h2&gt;

&lt;p&gt;Now let’s examine some of the key distinctions between block storage and object storage:  &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Block Storage&lt;/th&gt;
&lt;th&gt;Object Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Its metadata capabilities are limited.&lt;/td&gt;
&lt;td&gt;Its metadata can be customized extensively.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It can only safely scale up to a certain point.&lt;/td&gt;
&lt;td&gt;It offers limitless scalability while still retaining accessibility.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It is more costly.&lt;/td&gt;
&lt;td&gt;It is more cost effective.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It performs best with operations requiring high IOPS and low latency like relational database storage.&lt;/td&gt;
&lt;td&gt;It performs best with large volumes of unstructured data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It can be accessed at the OS level.&lt;/td&gt;
&lt;td&gt;It cannot be accessed at the OS level without a significant drop in performance.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Block storage requires management and configuration of its volumes.&lt;/td&gt;
&lt;td&gt;With object storage the management process is abstracted away by the provider.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The distance between the storage location and the application accessing it can affect latency.&lt;/td&gt;
&lt;td&gt;The data can be stored across a wide possible range of locations with no effect on latency.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data is broken up into raw blocks and stored in a hierarchical order.&lt;/td&gt;
&lt;td&gt;Data is stored whole inside distinct objects organized in a flat-file order.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;It allows for incremental edits to files.&lt;/td&gt;
&lt;td&gt;Making changes to files in an object would require the creation of a new object.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In essence, block storage excels in high performance for frequently accessed, structured data, while object storage shines in scalability and cost-effectiveness for massive archives and unstructured data. Understanding these strengths and the attendant tradeoffs will help you pick the right storage solution for your needs.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Text Substitution With the sed Command in Linux</title>
      <dc:creator>Emmanuel Taiwo</dc:creator>
      <pubDate>Sat, 06 Apr 2024 14:33:30 +0000</pubDate>
      <link>https://dev.to/devbird007/text-substitution-with-the-sed-command-in-linux-c1p</link>
      <guid>https://dev.to/devbird007/text-substitution-with-the-sed-command-in-linux-c1p</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finsmcc96jaxvbq1ofso0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finsmcc96jaxvbq1ofso0.png" alt="sedlogo" width="731" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;sed&lt;/code&gt; is a powerful tool often used in the Linux terminal to edit text documents without opening them. The word "sed" is a contraction of the phrase "Stream Editor". It is essentially a tool for editing streams of text. &lt;code&gt;sed&lt;/code&gt; takes in text from a file or text received from standard input (stdin) and lets you perform some operations on it. In this tutorial, I will demonstrate how &lt;code&gt;sed&lt;/code&gt; can be used to make string substitutions in text files in the Linux command-line environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a File
&lt;/h2&gt;

&lt;p&gt;First, open your Linux terminal and navigate to your home directory if you aren't there already. Create a new file with the &lt;code&gt;cat&lt;/code&gt; command by following the succeeding code block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; myfile.txt
This is my box.
It is mine.
My box is big, it is a big box.
My box is black, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the sandbox to play with my box.
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the sample file which we will perform most of our &lt;code&gt;sed&lt;/code&gt; operations on. In the next section, you will begin to see how the &lt;code&gt;sed&lt;/code&gt; command is fundamentally used to alter and substitute text.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Basic Syntax of &lt;code&gt;sed&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The most common way in which you will use &lt;code&gt;sed&lt;/code&gt; is this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/OLD-WORD/NEW-WORD/'&lt;/span&gt; FILENAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You start with typing the &lt;code&gt;sed&lt;/code&gt; keyword which lets the computer know you want to access the stream editor tool. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;s&lt;/code&gt; is the search operator that looks through the file.&lt;/p&gt;

&lt;p&gt;Next, you enter the word you want to substitute out or replace which is the &lt;code&gt;OLD-WORD&lt;/code&gt;, and the word you want to substitute in which is the &lt;code&gt;NEW-WORD&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Then you enter the name of the target file &lt;code&gt;FILENAME&lt;/code&gt; you wish to perform this &lt;code&gt;sed&lt;/code&gt; operation on. &lt;/p&gt;

&lt;p&gt;The forward slash &lt;code&gt;/&lt;/code&gt; which separates each keyword is called a delimiter, more on delimiters will be explained later.&lt;/p&gt;

&lt;p&gt;Now, using the &lt;code&gt;sed&lt;/code&gt; command in the file you created earlier, &lt;strong&gt;myfile.txt&lt;/strong&gt;, you will attempt to replace instances of the old word &lt;strong&gt;box&lt;/strong&gt; with a new word &lt;strong&gt;bag&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enter the following command and press &lt;code&gt;ENTER&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Immediately, the following output is displayed:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is black, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box.
&lt;/pre&gt;

&lt;p&gt;You may notice that the word &lt;strong&gt;sandbox&lt;/strong&gt; has been altered to &lt;strong&gt;sandbag&lt;/strong&gt;. This occurs because the &lt;code&gt;sed&lt;/code&gt; command acts on text patterns it encounters, not simply the standalone word.&lt;/p&gt;

&lt;p&gt;You may also observe that on each line, only the first instance of &lt;strong&gt;box&lt;/strong&gt; is changed to &lt;strong&gt;bag&lt;/strong&gt;. The rest are left unchanged. You can look at the highlighted words in the generated output to observe this.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: The file &lt;strong&gt;myfile.txt&lt;/strong&gt; itself remains unchanged. By default the &lt;code&gt;sed&lt;/code&gt; command prints the result of its operation to standard output (stdout). More on how to permanently save your edits will be covered later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Substituting Specific Instances
&lt;/h2&gt;

&lt;p&gt;By default, only the first instance of the specified text is altered. If you wish to change the order of the affected instance, you type in the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/2'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following output is displayed in your terminal upon execution:&lt;/p&gt;

&lt;pre&gt;
This is my box.
It is mine.
My box is big, it is a big &lt;b&gt;bag&lt;/b&gt;.
My box is black, my &lt;b&gt;bag&lt;/b&gt; is strong, my box is the best.
My mother bough it for me.
Let's go to the sandbox to play with my &lt;b&gt;bag&lt;/b&gt;.
&lt;/pre&gt;

&lt;p&gt;In the command entered, you'll notice that we've added a number &lt;strong&gt;2&lt;/strong&gt;. What this does is, it makes it so that on each line where &lt;strong&gt;box&lt;/strong&gt; appears, it isn't the first instance that is altered, but rather, the second instance. Looking at the generated output, you will be able to observe this.&lt;/p&gt;

&lt;p&gt;You may replace &lt;strong&gt;2&lt;/strong&gt; with any number to denote which instance of the old word you wish to substitute out for your new word.&lt;/p&gt;

&lt;h2&gt;
  
  
  Substituting All instances
&lt;/h2&gt;

&lt;p&gt;If you wish for every instance of the old word &lt;strong&gt;box&lt;/strong&gt; in the file to be replaced with the new word &lt;strong&gt;bag&lt;/strong&gt;, enter the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/g'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see this output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big &lt;b&gt;bag&lt;/b&gt;.
My &lt;b&gt;bag&lt;/b&gt; is black, my &lt;b&gt;bag&lt;/b&gt; is strong, my &lt;b&gt;bag&lt;/b&gt; is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my &lt;b&gt;bag&lt;/b&gt;.
&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;g&lt;/code&gt; flag added indictates you want to make the substitution globally, i.e everywhere the old word occurs in the file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigating Case-Insensitive Substitutions
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;sed&lt;/code&gt; command is by default case-sensitive. Using the &lt;code&gt;i&lt;/code&gt; flag in your &lt;code&gt;sed&lt;/code&gt; operation helps you make case-insensitive substitutions. This is for situations where you wish to find and replace instances of the old word regardless of the letter case they may be in. Below is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/BOX/bag/i'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is black, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box.
&lt;/pre&gt;

&lt;p&gt;You'll observe that even though &lt;strong&gt;BOX&lt;/strong&gt; is used in the command, instances of its lower-case, &lt;strong&gt;box&lt;/strong&gt;, in the file are altered. The substitution wouldn't work without the &lt;code&gt;i&lt;/code&gt; flag, you can try this out in your terminal environment to see.&lt;/p&gt;

&lt;p&gt;In the next section, we will see how to make changes on designated lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Substituting Text on Specific Lines
&lt;/h2&gt;

&lt;p&gt;To find and replace a text pattern on a specific line, instead of all the lines in the file, use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'3 s/box/bag'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generated output:&lt;/p&gt;

&lt;pre&gt;
This is my box.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My box is black, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the sandbox to play with my box.
&lt;/pre&gt;

&lt;p&gt;In the preceding generated output, you will observe that only the first instance of &lt;strong&gt;box&lt;/strong&gt; on the third line has been substituted out. Placing the number &lt;code&gt;3&lt;/code&gt; before &lt;code&gt;s&lt;/code&gt; tells the computer that in &lt;code&gt;myfile.txt&lt;/code&gt; you want to find and replace the word &lt;strong&gt;box&lt;/strong&gt; for &lt;strong&gt;bag&lt;/strong&gt; in the third line only. &lt;/p&gt;

&lt;p&gt;Also, you can change that number to whatever line number you want your substitution made instead.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: If you have a large file, to display the line numbers, enter this command:&lt;br&gt;&lt;br&gt;
  &lt;code&gt;sed = myfile.txt&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Substituting Text in a Range of Lines
&lt;/h2&gt;

&lt;p&gt;To find and replace text in a range of lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'1,3 s/box/bag/'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The displayed output&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My box is black, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the sandbox to play with my box
&lt;/pre&gt;

&lt;p&gt;In the &lt;code&gt;sed&lt;/code&gt; command entered, the first number is followed by the second number and a comma separates them. This command lets the computer know that you want your &lt;code&gt;sed&lt;/code&gt; substitutions to be made within the range of line 1 to line 3.&lt;/p&gt;

&lt;p&gt;In the next section, we will experiment with different ways of how to execute multiple &lt;code&gt;sed&lt;/code&gt; substitutions at a go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making Multiple &lt;code&gt;sed&lt;/code&gt; Substitutions
&lt;/h2&gt;

&lt;p&gt;At times, you may wish to use the &lt;code&gt;sed&lt;/code&gt; command multiple times on the same text file, there are various ways for you to execute this in one command entry in the Linux terminal.&lt;/p&gt;

&lt;p&gt;To demonstrate this, you will substitute the words &lt;strong&gt;box&lt;/strong&gt; with &lt;strong&gt;bag&lt;/strong&gt; and &lt;strong&gt;black&lt;/strong&gt; with &lt;strong&gt;red&lt;/strong&gt; in the text file we created, &lt;strong&gt;myfile.txt&lt;/strong&gt;. This can be done using any of the following methods:  &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Using Pipe &lt;code&gt;|&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Enter in the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/'&lt;/span&gt; myfile.txt | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/black/red/'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is &lt;b&gt;red&lt;/b&gt;, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box
&lt;/pre&gt;

&lt;p&gt;Remember, &lt;code&gt;sed&lt;/code&gt; is a &lt;strong&gt;Stream Editor&lt;/strong&gt;. It prints out to standard output(stdout) and can also take in text piped in from standard input(stdin). In the above scenario, the output from the first &lt;code&gt;sed&lt;/code&gt; substitution is piped in to the next &lt;code&gt;sed&lt;/code&gt; command to make its own substitutions too. This lets us make multiple &lt;code&gt;sed&lt;/code&gt; substitutions at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Using the &lt;code&gt;-e&lt;/code&gt; Option
&lt;/h3&gt;

&lt;p&gt;You may use the &lt;code&gt;-e&lt;/code&gt; option provided by &lt;code&gt;sed&lt;/code&gt; to conveniently execute multiple &lt;code&gt;sed&lt;/code&gt; substitutions at a go. See below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/black/red/'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is &lt;b&gt;red&lt;/b&gt;, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box
&lt;/pre&gt;

&lt;h3&gt;
  
  
  3. Using the Semicolon &lt;code&gt;;&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The semicolon &lt;code&gt;;&lt;/code&gt; allows you to quickly conjoin your multiple &lt;code&gt;sed&lt;/code&gt; commands and execute them at once on the same file. See below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/;s/black/red/'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Printed output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is &lt;b&gt;red&lt;/b&gt;, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box
&lt;/pre&gt;

&lt;p&gt;We've seen the different ways available that help facilitate executing multiple &lt;code&gt;sed&lt;/code&gt; substitutions at a go. In the next section we will go over what happens when you only want the lines you've altered returned to output. &lt;/p&gt;

&lt;h2&gt;
  
  
  Printing Edited Lines Only
&lt;/h2&gt;

&lt;p&gt;If you are working on a huge file, and you don't want the output of your &lt;code&gt;sed&lt;/code&gt; commands on the file filling up your terminal environment each time you make an execution. There is a method you can use to isolate and output only the lines of the file your command has altered. See below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/p'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the generated output:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big box.
My &lt;b&gt;bag&lt;/b&gt; is black, my box is strong, my box is the best.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my box
&lt;/pre&gt;

&lt;p&gt;In the command executed we use the &lt;code&gt;-n&lt;/code&gt; option and the &lt;code&gt;p&lt;/code&gt; flag. The &lt;code&gt;-n&lt;/code&gt; option suppresses automatic printing of the output. Meanwhile, the &lt;code&gt;p&lt;/code&gt; flag causes double printing of the edited lines. The combination of these two will cause the command to print out the edited lines only.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: &lt;code&gt;sed&lt;/code&gt; provides a whole lot of options and flags you can use to make all kinds of tweaks to your substitutions. To access them, you simply enter &lt;code&gt;sed --help&lt;/code&gt; into your terminal or &lt;code&gt;man sed&lt;/code&gt; for the full user manual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Delimiters
&lt;/h2&gt;

&lt;p&gt;So far, we've been using the forward-slash &lt;code&gt;/&lt;/code&gt; as a delimiter to separate the relevant categories of our substitution commands in the terminal. Although, there will be situations where this will not suffice. &lt;/p&gt;

&lt;p&gt;For example if you're trying to use &lt;code&gt;sed&lt;/code&gt; on a URL, a URL already has forward slashes &lt;code&gt;/&lt;/code&gt; so an error will occur if you try to use a forward-slash(/) as a delimiter. Fortunately, other special characters can be used as delimiters too. &lt;/p&gt;

&lt;p&gt;Let us try to make a &lt;code&gt;sed&lt;/code&gt; substitution on the URL &lt;code&gt;https://www.wikipedia.org/homepage.html&lt;/code&gt;. We will take the text pattern &lt;strong&gt;org/homepage&lt;/strong&gt; and replace it with &lt;strong&gt;inc/search&lt;/strong&gt;. See below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"https://www.wikipedia.org/homepage.html"&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s$org/homepage$inc/search$'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting output:&lt;/p&gt;

&lt;pre&gt;
https://www.wikipedia.&lt;b&gt;inc/search&lt;/b&gt;.html
&lt;/pre&gt;

&lt;p&gt;In the command entered, notice that we now use a dollar-sign &lt;code&gt;$&lt;/code&gt; as a delimiter to separate the text we want to substitute out &lt;strong&gt;org/homepage&lt;/strong&gt; and the text to be substituted in &lt;strong&gt;inc/search&lt;/strong&gt;. If we had tried using the forward-slash &lt;code&gt;/&lt;/code&gt; as a delimiter, the operation wouldn't have been successful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Saving Changes
&lt;/h2&gt;

&lt;p&gt;It is not enough to only make our edits in stream, you may wish to have the files altered permanently. To make the changes permanent, you must pass the &lt;code&gt;-i&lt;/code&gt; option. See below for an example acting on the earlier created &lt;strong&gt;myfile.txt&lt;/strong&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/black/red/'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To confirm that the file has been altered, you will open it with the &lt;code&gt;cat&lt;/code&gt; command like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result:&lt;/p&gt;

&lt;pre&gt;
This is my box.
It is mine.
My box is big, it is a big box.
My box is &lt;b&gt;red&lt;/b&gt;, my box is strong, my box is the best.
My mother bought it for me.
Let's go to the sandbox to play with my box.
&lt;/pre&gt;

&lt;p&gt;Owing to the &lt;code&gt;-i&lt;/code&gt; option, we have now confirmed that the old word &lt;code&gt;black&lt;/code&gt; has been replaced with a new word &lt;code&gt;red&lt;/code&gt; permanently.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: It is not advised to use the &lt;code&gt;-i&lt;/code&gt; option casually because doing so could cause you to permanently lose your data. Use it only when you are certain you want to make irreversible changes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Saving Changes to a New File
&lt;/h2&gt;

&lt;p&gt;Suppose instead you wanted to save your changes to a new file leaving the first one unaltered. Enter the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/box/bag/g'&lt;/span&gt; myfile.txt &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; secondfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the file &lt;strong&gt;secondfile.txt&lt;/strong&gt; did not exist, it is created automatically in your present working directory with the output generated from the &lt;code&gt;sed&lt;/code&gt; command executed. &lt;/p&gt;

&lt;p&gt;If you open the file with the command &lt;code&gt;cat secondfile.txt&lt;/code&gt;, you should see the following:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big &lt;b&gt;bag&lt;/b&gt;.
My &lt;b&gt;bag&lt;/b&gt; is red, my &lt;b&gt;bag&lt;/b&gt; is strong, my &lt;b&gt;bag&lt;/b&gt; is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my &lt;b&gt;bag&lt;/b&gt;.
&lt;/pre&gt;

&lt;h2&gt;
  
  
  Making a Backup
&lt;/h2&gt;

&lt;p&gt;You can also pass an option that tells the computer to permanently edit the file but create a backup of the original document. To do this, you type out a variation of the &lt;code&gt;-i&lt;/code&gt; option, which is the &lt;code&gt;-i.bak&lt;/code&gt; option. It is used like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt;.bak &lt;span class="s1"&gt;'s/box/bag/g'&lt;/span&gt; myfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above command will save your changes to the &lt;strong&gt;myfile.txt&lt;/strong&gt; file, but also creates a backup of the original file with a &lt;strong&gt;.bak&lt;/strong&gt; extension in the same directory. So the backup created from the command above will be &lt;strong&gt;myfile.txt.bak&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;cat myfile.txt&lt;/code&gt; gets you:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;bag&lt;/b&gt;.
It is mine.
My &lt;b&gt;bag&lt;/b&gt; is big, it is a big &lt;b&gt;bag&lt;/b&gt;.
My &lt;b&gt;bag&lt;/b&gt; is red, my &lt;b&gt;bag&lt;/b&gt; is strong, my &lt;b&gt;bag&lt;/b&gt; is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbag&lt;/b&gt; to play with my &lt;b&gt;bag&lt;/b&gt;.
&lt;/pre&gt;

&lt;p&gt;Running &lt;code&gt;cat myfile.txt.bak&lt;/code&gt; gets you:&lt;/p&gt;

&lt;pre&gt;
This is my &lt;b&gt;box&lt;/b&gt;.
It is mine.
My &lt;b&gt;box&lt;/b&gt; is big, it is a big &lt;b&gt;box&lt;/b&gt;.
My &lt;b&gt;box&lt;/b&gt; is red, my &lt;b&gt;box&lt;/b&gt; is strong, my &lt;b&gt;box&lt;/b&gt; is the best.
My mother bought it for me.
Let's go to the &lt;b&gt;sandbox&lt;/b&gt; to play with my &lt;b&gt;box&lt;/b&gt;.
&lt;/pre&gt;

&lt;p&gt;You can see that &lt;strong&gt;myfile.txt&lt;/strong&gt; is permanently altered while &lt;strong&gt;myfile.txt.bak&lt;/strong&gt; contains its original content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Now you know the different ways of using &lt;code&gt;sed&lt;/code&gt; to make basic substitutions in text files in the linux command line, how to make multiple sed changes in one entry, and how to save your changes permanently.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Edge Computing and the ChRIS Project</title>
      <dc:creator>Emmanuel Taiwo</dc:creator>
      <pubDate>Sun, 16 Jul 2023 23:48:39 +0000</pubDate>
      <link>https://dev.to/devbird007/edge-computing-and-the-chris-project-42da</link>
      <guid>https://dev.to/devbird007/edge-computing-and-the-chris-project-42da</guid>
      <description>&lt;p&gt;Hello dear reader, today I am going to tell you about the open source project I am contributing to as an &lt;a href="https://www.outreachy.org/" rel="noopener noreferrer"&gt;Outreachy&lt;/a&gt; intern, the ChRIS Project.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChRIS
&lt;/h2&gt;

&lt;p&gt;ChRIS is an open source platform that makes computational medicine more accessible to researchers wherever they are, enabling them to conduct large-scale translational research in the cloud. It provides a common platform for researchers to innovate, develop and share computational medicine across the globe using a combination of public and private cloud resources. &lt;/p&gt;

&lt;p&gt;ChRIS is the result of a cooperative effort between &lt;a href="https://massopen.cloud/" rel="noopener noreferrer"&gt;the Mass Open Cloud&lt;/a&gt; (MOC), &lt;a href="https://www.redhat.com/en" rel="noopener noreferrer"&gt;Red Hat&lt;/a&gt; and &lt;a href="https://www.childrenshospital.org/alliance?utm_campaign=FY21PCARegPractice&amp;amp;utm_medium=cpc&amp;amp;utm_source=google&amp;amp;utm_content=brockton&amp;amp;gad=1&amp;amp;gclid=Cj0KCQjwzdOlBhCNARIsAPMwjbyK2A7TwHuFElML0_nvA-C9h9XaaSFS-2IpYoW5jDNDZL9PMkLAjTsaAj1oEALw_wcB" rel="noopener noreferrer"&gt;Boston Children's Hospital&lt;/a&gt;. It takes advantage of the latest technologies and user-friendly best practices to spur both creation and deployment of applications, so that users of the platform can simply focus on and only interact with their data. Everything else is abstracted away. Some of the technologies used in the development of ChRIS are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes&lt;/li&gt;
&lt;li&gt;OpenShift&lt;/li&gt;
&lt;li&gt;Red Hat Enterprise Linux&lt;/li&gt;
&lt;li&gt;OCI Containers&lt;/li&gt;
&lt;li&gt;Swift
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll observe that they are all also open source and industry-standard.&lt;/p&gt;

&lt;p&gt;So far, I have given a brief overview of what ChRIS is all about. Moving on, I will talk about the specific subproject within ChRIS that I am working on. This is &lt;strong&gt;ChRIS in a Box&lt;/strong&gt;. The goal of &lt;strong&gt;ChRIS in a Box&lt;/strong&gt; is to facilitate --with code and configurations-- the deployment of the ChRIS platform at the edge.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the edge?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Edge&lt;/strong&gt; in this context refers to &lt;strong&gt;edge-computing&lt;/strong&gt;. Edge-computing is the paradigm and practice of deploying applications and processing data much closer to the end users, where the data is being generated. The aim here is to enable greater processing speeds and volumes in a reliable and secure manner.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChRIS in a Box
&lt;/h2&gt;

&lt;p&gt;I believe at this point you are beginning to get an idea of what the &lt;strong&gt;ChRIS in a box&lt;/strong&gt; project is about. My work on &lt;strong&gt;ChRIS in a box&lt;/strong&gt; is about containerizing the ChRIS platform with code and configurations in a way that it can be deployed on Red Hat edge devices and then transported to where it will be of great use. &lt;br&gt;
With ChRIS at the edge, ChRIS is then accessible at remote medical facilities for researchers to use, wherever they may be. I am using a lot of automated DevOps processes to facilitate easy, secure and reliable deployment of the ChRIS platform so they can really enjoy its benefits.&lt;/p&gt;

&lt;p&gt;The ChRIS project is all about facilitating the cooperative analysis, development and distribution of computational medicine, and I am glad I get to work on this project.&lt;/p&gt;

</description>
      <category>edge</category>
      <category>edgecomputing</category>
    </item>
    <item>
      <title>Outreachy Blog: Introduce Yourself</title>
      <dc:creator>Emmanuel Taiwo</dc:creator>
      <pubDate>Mon, 19 Jun 2023 02:44:42 +0000</pubDate>
      <link>https://dev.to/devbird007/outreachy-blog-introduce-yourself-49mc</link>
      <guid>https://dev.to/devbird007/outreachy-blog-introduce-yourself-49mc</guid>
      <description>&lt;p&gt;Hello there, my name is Emmanuel Taiwo, and I'm from Nigeria. I was begrudgingly studying in a university to get my degree in Mechanical Engineering before I discovered the wonders of the tech industry, realized what I wanted to do and summarily dropped out. My life has kind of really been a rollercoaster ever since, but these days I like to sharpen and grow my tech skills, as well as contribute to open source projects I am passionate about. I am very decisive and like to think of myself as ambitious &lt;br&gt;
—even though I am not always like that. See, I really want to be an ambitious and goal-driven person because I think it's...cool.&lt;/p&gt;

&lt;p&gt;Presently, I am an Outreachy intern at the ChRIS project. I'm working as a DevOps Engineering intern, working with containers and configurations for &lt;strong&gt;edge computing&lt;/strong&gt;, and I really am loving every step of the way. I mean, sometimes it is really challenging, but this is my way of my life, I take on challenging things and I hope to be transformed by them.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Core Values
&lt;/h2&gt;

&lt;p&gt;Here are some of my core values and why they are very dear to me:&lt;/p&gt;

&lt;h3&gt;
  
  
  Practice! Practice! Practice!
&lt;/h3&gt;

&lt;p&gt;I think the fastest way to get good at anything is to consistently pour many hours of practice into it. It's why I am never really terrified of topics and challenges I have never broached before, because I realize I only need to practice consistently, work hard at it, and eventually the challenge will stop looking so insurmountable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Know yourself
&lt;/h3&gt;

&lt;p&gt;I think I devote a considerable amount of my time to just trying to have honest conversations with myself. This helps me be confident in my understanding of who I am, where I am in the world and where I want to be. I think you will find that making long form plans about the kind of life you want to live are much easier when you are very sure on what type of person you are.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keep expanding your horizons
&lt;/h3&gt;

&lt;p&gt;Oh! This one is something that I very deeply cherish. Always keep expanding your horizons. At least every single day, I learn a new thing about the world that I find very salient. One of my favorite pastimes is watching informative YouTube videos. I suppose my most noticeable trait if you know me in real life is that I carry a lot of weird and obscure knowledge about different random things. I'm constantly reading articles, watching informative videos, ruminating on the content I consume and simply constantly expanding my understanding of the world I inhabit. This is something I have always done since I was that kid on my home desktop computer starting up the Encarta Kids app —it was a software that contained lots of fun-sized easy-to-consume information about a variety of things in the world optimized for kids learning, information ranging from short biographies about relevant historic figures to profiles on different creatures in the animal kingdom. It kind of shaped who I am today.&lt;/p&gt;

&lt;p&gt;Well, this brings me to the end of my article. Thank you for sticking around to the end. Hope you like it enough to come back around for the next one. Byeee.&lt;/p&gt;

</description>
      <category>outreachy</category>
      <category>internship</category>
    </item>
  </channel>
</rss>
