Learning Flutter part 1

In this series, let together learning flutter dart part 1.

What is Flutter

Flutter is a Google UI toolkit for building, natively compiled applications for mobile, web and desktop from a single codebase.

  • Fast Development
    • with Stateful Hot Reload helps Paint your app to life in milliseconds. realtime!
  • Expressive and Flexible UI
    • The layered architecture allows for full customization, which results in incredibly fast rendering and expressive and flexible designs.
  • Native performance
    • Full native performance on both IOS and Android.

Flutter System Overview

Architectural Overview Platform channels

Why flutter use Dart?

Flutter is a Framework. It uses Dart to build a layer Framework.

  • Support build, compile AOT(Ahead Of Time) and JIT(Just In Time).
  • OOP Language.
  • Flutter aims to provide 60 frames per second fps performance.

JIT and AOT work

How does Dart work?

Dart programming language basic

  • Dart is a programming language OOP ( Example: null, functions, number… is Object ).
  • All Objects inherits from the Object Dart class.
  • Support Generic types. For example, List
  • There are no keywords public, protected and private.
  • Dart is programming language strongly typed but type annotation is optional. For example, var number = 30 -> number = int )

Install the Dart SDK

Link here: https://dart.dev/get-dart

I will use IntelliJIDEA to code :). Link here

Add plugin Dart for IntelliJIDEA

Choice Configure –> Plugins.

Click Marketplace –> search dart —> click Installed.

Create a New Project for Dart

Select Dart –> Console Application – a Command-line application sample.

For example, Project name: Dart-Study and Project location as the picture below

Now we will code hello with a dart programming language 🙂

void main(){
  print("Hello, I am Dart");
}

Conclusion

Through the article, we learn “Learning Flutter dart part 1” as above. I hope will this your helpful. Thank you for reading the DevopsRoles page!

How to Manage Users and Roles in Jenkins

In this tutorial, How to Manage users and Roles in jenkins. You have installed “plugin Manage and Assign Roles” if yet then install it! Now let begin.

Install and configure Manage users and Roles in Jenkins

1. Click Jenkins –> Manage Jenkins –> Configure Global Security –> Choose Role-Based Strategy.

2. click Jenkins –> Manage Jenkins –> Click Manage and Assign Roles –> Click Manage Roles.

In Global roles –> Role to add. For example, Add new admin, user

In “Project roles” –> Add “Role to add” and “Pattern”.
For example, Multiple Pattern for NGINX.
Role to add: NGINX
Pattern: startnginx.|stopnginx.|buildnginx.*

3. click Jenkins –> Manage Jenkins –> Click Manage and Assign Roles –> Click Assign Roles.

In “Global roles” –> Add “User/group to add”.
For example: “User/group to add”add new xxx_jenkins account and chose “user” role. Account HuuPV chose the “admin” role as in the picture below.

In “Item roles” –> Add “User/group to add”.

For example: choose xxx_jenkin account with role “ NGINX “ have created above step 2 as the picture below.

Plugin Manage and Asign Roles.

Conclusion

Thought the article, How to use “How to Manage Users and Roles in Jenkins” as above. I hope will this your helpful. Thank you for reading the DevopsRoles page!

chown Invalid argument centos solved problem

Good morning, I am working and changing the ownership folder of my home, but I cannot run chown command. It is Error “Invalid argument”. This is indeed an NFS4 issue. The error chown Invalid argument as following below:

[root@Client ~]# chown -R huupv:huupv /home/huupv                                                    
chown: changing ownership of `huupv/.bashrc': Invalid argument
chown: changing ownership of `huupv': Invalid argument

My environment

Client <---> NFS server

How can I fix the chown Invalid argument this

You need to check step by step as below:

NFS client:

[root@Client ~]# cat /etc/redhat-release
Centos 6

NFS Server

[root@DevopsRoles ~]# cat /etc/redhat-release
Centos 7

Configure NFS server

[root@DevopsRoles ~]# cat /etc/exports

The Content in file exports

#Data Volume Share
/mnt/data 192.168.1.12(rw,sync,no_root_squash,no_subtree_check)

Solve Problem

From the Client, we will umount and mount as below

[root@Client ~]# umount /mnt/data # if umount is busy then you need run umount -lf /mnt/data
[root@Client ~]# mount -t nfs -o vers=3 192.168.1.13:/mnt/data  /mnt/data
[root@Client ~]# chown -R huupv:huupv /home/huupv

You have solved the problem “chown Invalid argument centos” Thank you for reading the DevopsRoles page!

Spring Boot application as a service in Linux

In this tutorial, How to run Spring Boot Application as a service in Linux. Spring boot preferred deployment method via an executable jar file that contains tomcat inside.

Spring Boot application as a service

Spring Boot and Systemd

Create new file “/etc/systemd/system/myapp.service” as a service to start on reboot.

[Unit]
Description=myapp
After=syslog.target
[Service]
User=myapp
ExecStart=/var/myapp/myapp.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target

Note: You change the Description, User, and ExecStart fields suitable for your application.

Start the service:

$ sudo systemctl start myapp

Check the status is active

$ sudo systemctl status myapp

Spring Boot and System V

Create a specific user to run the service and executable JAR file.

$ cd /opt/myapp
$ sudo useradd huupv
$ sudo passwd huupv
$ sudo chown huupv:huupv myapp.jar
$ sudo chmod 500 myapp.jar

Assuming you have a Spring Boot application installed in the folder /opt/myapp . you need to create a symlink as follows:

$ sudo ln -s /opt/myapp/myapp.jar /etc/init.d/myapp

Start the service

$ sudo service myapp start

You have created the “Spring Boot application as a service in Linux“.Thank you for reading the DevopsRoles page!

Install Gradle on CentOS

In this tutorial, How to install Gradle on CentOS. Gradle is a free and Open Source that helps your build, automate and deliver better software, faster.

Prerequisites

  • Server instance : CentOS 7
  • A sudo user.

Your System update

Login into the sudo user and run the following commands to update your system.

$ sudo yum -y install epel-release
$ sudo yum -y update
$ sudo reboot

Install JDK

Gradle requires Java Development Kit (JDK) 7 or higher in order to work. Link here

Download Gradle

In this guide, I use the “binary-only” archive. Link the Gradle release page to the latest version of Gradle. Using wget command to download Gradle.

$ cd /opt/
$ wget https://downloads.gradle-dn.com/distributions/gradle-5.6.2-bin.zip

Install Gradle on CentOS

Your run the command following.

$ sudo mkdir /opt/gradle
$ sudo unzip -d /opt/gradle gradle-5.6.2-bin.zip

Set the PATH environment for Gradle executable.

$ export PATH=$PATH:/opt/gradle/gradle-5.6.2/bin

To check if the Gradle install was successful.

$ gradle -v

Your system is now built the program with Gradle. Thank you for reading the DevopsRoles page!

How to use Docker-compose Build SonarQube

In this tutorial, How to Docker-compose Build SonarQube.

Docker-compose Build SonarQube

Build SonarQube with Docker-compose

  • WebApp: Create Mysql with Docker-compose
  • SonarQube: Create Mysql with Docker-compose
  • And Launch SonarQube with Docker-compose

Folder Structure for SonarQube

[vagrant@localhost ~]$ tree docker
 docker
 ├── docker-compose.yml
 ├── mysql
 │   ├── conf
 │   │   └── custom.cnf
 │   └── init
 │       ├── 1_create_db.sql
 │       ├── 2_create_user.sql
 │       └── 3_grant.sql
 └── sonarqube
 4 directories, 5 files

Mysql Configure

Create file ./mysql/conf/custom.cnf

The content as below

[mysqld]
character-set-server=utf8
lower_case_table_names=1
explicit_defaults_for_timestamp=true

Create two Database

Create the database with “./mysql/init/1_create_db.sql” file.

-- For WebApp
CREATE DATABASE IF NOT EXISTS items DEFAULT CHARACTER SET UTF8;
-- For SonarQube
CREATE DATABASE IF NOT EXISTS sonar DEFAULT CHARACTER SET UTF8;

User for SonarQube

Create a user with “./mysql/init/2_create_user.sql” file

CREATE USER 'sonar' IDENTIFIED BY 'sonar';

Grant user

Grant user for sonar with “./mysql/init/3_grant.sql” file.

GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;

Example docker-compose file as below

version: '3.5'
services:
 mysql:
     image: mysql:5.7.21
     container_name: mysql
     ports:
       - 3306:3306
     volumes:
       - ./mysql/init:/docker-entrypoint-initdb.d
       - ./mysql/conf/:/etc/mysql/conf.d
     networks:
       - sonarnet
     environment:
       MYSQL_ROOT_PASSWORD: root
     restart: always
 sonarqube:
     image: sonarqube:7.0
     container_name: sonarqube
     depends_on:
       - mysql
     volumes:
       - sonarqube_conf:/opt/sonarqube/conf
       - sonarqube_data:/opt/sonarqube/data
       - sonarqube_extensions:/opt/sonarqube/extensions
       - sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
     networks:
       - sonarnet
     command: -Dsonar.web.context=/sonarqube
     ports:
       - 9000:9000
       - 9092:9092
     environment:
       - SONAR_JDBC_USERNAME=sonar
       - SONAR_JDBC_PASSWORD=sonar
       - SONAR_JDBC_URL=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
     restart: always
networks:
   sonarnet:
     driver: bridge
volumes:
   sonarqube_conf:
   sonarqube_data:
   sonarqube_extensions:
   sonarqube_bundled-plugins:

Build and start with Docker-compose

$ cd docker
$ docker-compose -f docker-compose.yml up -d

Access to SonarQube login page

  • Link access: http://127.0.0.1:9000/sonarqube
  • User/Password: admin/admin

As a result the picture below

Stop SonarQube with Docker-compose

$ cd docker
$ docker-compose -f docker-compose.yml stop

You have Docker-compose Build SonarQube. Thank you for reading! Thank you for reading the DevopsRoles page!

Install Oracle client 18.3 on centos 7

In this tutorial, How to install Oracle client 18.3 on Centos 7.

Bach server (sqlplus,sqlldr, etc) <–> Oracle server

Your environment

On server

  • OS: Centos 7 (Batch server)
  • Oracle client 18.3

On My PC

  • OS: Windows
  • Putty
  • Xming server

Install Oracle client 18.3 on centos 7

On server

Install the packages

$ sudo yum install zip libaio wget unzip
$ sudo yum install  xorg-x11-server-Xorg xorg-x11-xauth xorg-x11-apps -y

Download Oracle client 18.3 Here

To change to folder Oracle client

$ cd /opt/
$ unzip LINUX.X64_180000_client.zip

Create Account for Oracle

$ sudo groupadd -g 501 oinstall
$ sudo groupadd -g 502 dba
$ sudo useradd -u 501 -g 501 -G 502 -s /bin/bash -d /home/oracle oracle -m

Enable X11Forwarding in sshd_config file. The content as below

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

On PC

Install Xming server link download here. After you have to install Xming server then start it.

Configure Putty enable X11Forwarding as the picture below

Install Oracle client 18.3

[oracle@batch-server ~]$ cd /opt/client/
[oracle@batch-server ~]$ xclock

The result as the picture below

Run Oracle client 🙂

[oracle@batch-server ~]$  ./runInstaller

Confirm after install Oracle client 18.3

How to create variable $ORACLE_HOME for oracle user. For example as below

[oracle@batch-server ~]$ cat .bash_profile

 #The content as below
 PATH=$PATH:$HOME/.local/bin:$HOME/bin
 export ORACLE_HOME=/opt/oraInventory/product/18.0.0/client_1
 export PATH=$PATH:$ORACLE_HOME/bin

 [oracle@batch-server ~]$ source .bash_profile

Create new file tnsnames.ora

[oracle@batch-server ~]$ $ORACLE_HOME/network/admin/tnsnames.ora

The following is a reference example.

devopsroles_01 = 
   (DESCRIPTION =
     (ENABLE = BROKEN)
     (LOAD_BALANCE = ON)
     (FAILOVER = ON)
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.2.15)(PORT = 1534))
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.2.15)(PORT = 1535))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = DBB_DEVOPSROLES)
       (SERVER = DEDICATED)
     )
   )

Add end line in file sqlnet.ora

[oracle@batch-server ~]$ $ORACLE_HOME/network/admin/sqlnet.ora

The content as below

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /opt/oracle

Connection check from Batch server to Oracle database.

[oracle@batch-server ~]$ sqlplus /nolog
 SQL> conn username/password
 SQL> set head off
 SQL> select * from v$instance ;
 SQL> quit

You have installed Oracle client 18.3 on Centos 7. If during setup error you can Q&A. Thank you for reading!

Redis Install and Configure: Your Database and Cache System

Introduction

This tutorial is a Step-by-Step Guide to Redis Install and Configure. Now, let’s go Redis Install and Configure.

Dive into the efficient world of Redis with this detailed guide on installation and configuration on Linux systems. Whether you’re setting up Redis for the first time or optimizing an existing installation, this tutorial offers clear, step-by-step instructions to get Redis up and running smoothly on your server.

Redis

  • It is an Open Source.
  • In-memory data structure store.
  • Used as Database.
  • Cache and message broker.
  • Redis is a key-value pair cache and store

Redis is perfect for storing sessions. All operations are performed in memory, so reading and writing will be fast

Redis Install and Configure

Download Redis

Link latest Redis home here

$ cd /opt
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ sudo tar zxvf redis-5.0.5.tar.gz
$ cd redis-5.0.5

Install Redis

$ sudo make test
$ sudo make
$ sudo make install

If the following error is in make test command as below.

You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1
make[1]: Leaving directory `/opt/redis-5.0.5/src'
make: *** [test] Error 2

You need to install tcl

$ sudo yum install -y tcl

Again install Redis

$ sudo make test

Error

Executing test client: couldn’t execute “src/redis-benchmark”: no such file or directory.

Then perform the following steps

$ sudo make distclean
$ sudo make
$ sudo make install

Configure Redis

$ sudo mkdir /etc/redis
$ sudo cp redis.conf /etc/redis/6379.conf
$ sudo vi /etc/redis/6379.conf

The information content 6379.conf file

$ cat /etc/redis/6379.conf | grep -v "#" | sed /^$/d
 bind 127.0.0.1
 protected-mode yes
 port 6379
 tcp-backlog 511
 timeout 0
 tcp-keepalive 300
 daemonize yes
 supervised no
 pidfile /var/run/redis_6379.pid
 loglevel notice
 logfile "/var/log/redis_6379.log"
 databases 16
 always-show-logo yes
 save 900 1
 save 300 10
 save 60 10000
 stop-writes-on-bgsave-error yes
 rdbcompression yes
 rdbchecksum yes
 dbfilename dump.rdb
 dir /etc/redis/
 replica-serve-stale-data yes
 replica-read-only yes
 repl-diskless-sync no
 repl-diskless-sync-delay 5
 repl-disable-tcp-nodelay no
 replica-priority 100
 maxmemory 10240000
 lazyfree-lazy-eviction no
 lazyfree-lazy-expire no
 lazyfree-lazy-server-del no
 replica-lazy-flush no
 appendonly no
 appendfilename "appendonly.aof"
 appendfsync everysec
 no-appendfsync-on-rewrite no
 auto-aof-rewrite-percentage 100
 auto-aof-rewrite-min-size 64mb
 aof-load-truncated yes
 aof-use-rdb-preamble yes
 lua-time-limit 5000
 slowlog-log-slower-than 10000
 slowlog-max-len 128
 latency-monitor-threshold 0
 notify-keyspace-events ""
 hash-max-ziplist-entries 512
 hash-max-ziplist-value 64
 list-max-ziplist-size -2
 list-compress-depth 0
 set-max-intset-entries 512
 zset-max-ziplist-entries 128
 zset-max-ziplist-value 64
 hll-sparse-max-bytes 3000
 stream-node-max-bytes 4096
 stream-node-max-entries 100
 activerehashing yes
 client-output-buffer-limit normal 0 0 0
 client-output-buffer-limit replica 256mb 64mb 60
 client-output-buffer-limit pubsub 32mb 8mb 60
 hz 10
 dynamic-hz yes
 aof-rewrite-incremental-fsync yes
 rdb-save-incremental-fsync yes

Create Deamon for Redis

$ sudo cp utils/redis_init_script /etc/init.d/redis
$ sudo chkconfig --add redis
$ sudo chkconfig redis on
$ sudo /etc/init.d/redis start

The Redis server has been installed on your system.

$ sudo netstat -nplt | grep 6379                                            
 tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      11567/redis-server

For more advanced details the “redis.conf” file configuration item is described as follows:

When the client is idle for a long time, close the connection

timeout 300

Specify the logging level. Redis supports four levels: debug, verbose, notice, and warning. The default is verbose.

loglevel verbose

Set the number of databases, the default database is 0, you can use the “select DBID from v$database;” command to specify the database ID on the connection

databases 16

Set the IP address and port of the master service when the machine is slav service. When Redis starts, it will automatically synchronize data from the master.

slaveof <masterip> <masterport>

When the master service is password protected, the slav service connects to the master password.

masterauth <master-password>

Set the Redis connection password. If the connection password is configured, the client needs to provide the password through the AUTH command when connecting to Redis. The default is off.

requirepass abc

Set the maximum number of client connections at the same time. The default is unlimited.

maxclients 128

Specify the maximum memory limit of Redis. Redis will load the data into the memory at startup. After the maximum memory is reached, Redis will first try to clear the expired or expired Key. When this method is processed, the maximum memory setting is still reached. The write operation will no longer be possible, but the read operation will still be possible. Redis’ new VM mechanism will store the Key in memory and the value will be stored in the swap area.

maxmemory <bytes>

You can use the same configuration file between multiple Redis instances on the same host, and each instance has its own specific configuration file.

include /path/to/local.conf

Conclusion

Successfully installing and configuring Redis enhances your application’s performance by providing rapid data access. This guide aims to equip you with the knowledge to seamlessly integrate Redis into your system, ensuring optimal setup for a robust data management solution. Thank you for reading the DevopsRoles page!

AWS Certified Solutions Architect Exercises- part 3 Amazon VPC

Introduction

In the ever-evolving landscape of technology, mastering the skills and knowledge of AWS solution architecture is more crucial than ever. Understanding and practicing exercises related to Amazon Virtual Private Cloud (VPC) is a key component in becoming an AWS Certified Solutions Architect. This article, the third installment in our series, will guide you through essential exercises involving Amazon VPC. We will help you grasp how to set up and manage VPCs, understand their core components, and create a secure, flexible networking environment for your applications.

In this article, we’ll learn about Amazon VPC, the best way to become familiar with Amazon VPC is to build your own custom Amazon VPC and then deploy Amazon EC2 instances into it. AWS Certified Solutions Architect Exercises- part 3 Amazon VPC

1. Today’s tasks

  • Create a Custom Amazon VPC
  • Create Two Subnets for Your Custom Amazon VPC
  • Connect Your Custom Amazon VPC to the Internet and Establish Routing
  • Launch an Amazon EC2 Instance and Test the Connection to the Internet.

2. Before you begin AWS Certified Solutions Architect

  • Command-line tool to SSH into the Linux instance.

3. Let’s do it

EXERCISE 1:

Create a Custom Amazon VPC

1. Open the Amazon VPC console

2. In the navigation pane, choose Your VPCs, and Create VPC.

3. Specify the following VPC details as necessary and choose to Create.

  • Name tag: My First VPC
  • IPv4 CIDR block: 192.168.0.0/16
  • IPv6 CIDR block:  No IPv6 CIDR Block
  • Tenancy:  Default

EXERCISE 2:

Create Two Subnets for Your Custom Amazon VPC

To add a subnet to your VPC using the console

1. Open the Amazon VPC console

2. In the navigation pane, choose SubnetsCreate subnet.

3. Specify the subnet details as necessary and choose to Create.

  • Name tag: My First Public Subnet.
  • VPC: Choose the VPC from Exercise 1.
  • Availability Zone: Optionally choose an Availability Zone in which your subnet will reside, or leave the default No Preference to let AWS choose an Availability Zone for you.
  • IPv4 CIDR block: 192.168.1.0/24.

4. Create a subnet with a CIDR block equal to 192.168.2.0/24 and a name tag of My First Private Subnet. Create the subnet in the Amazon VPC from Exercise 1, and specify a different Availability Zone for the subnet than previously specified (for example, ap-northeast-1c). You have now created two new subnets, each in its own Availability Zone.

EXERCISE 3:

Connect Your Custom Amazon VPC to the Internet and Establish Routing

1. Create an IGW with a name tag of My First IGW and attach it to your custom Amazon VPC.

2. Add a route to the main route table for your custom Amazon VPC that directs Internet traffic (0.0.0.0/0) to the IGW.

3. Create a NAT gateway, place it in the public subnet of your custom Amazon VPC, and assign it an EIP.

4. Create a new route table with a name tag of My First Private Route Table and place it within your custom Amazon VPC. Add a route to it that directs Internet traffic (0.0.0.0/0) to the NAT gateway and associate it with the private subnet.

EXERCISE 4:

Launch an Amazon EC2 Instance and Test the Connection to the Internet

1. Launch a t2.micro Amazon Linux AMI as an Amazon EC2 instance into the public subnet of your custom Amazon VPC, give it a name tag of My First Public Instance and select your key pair for secure access to the instance.

2. Securely access the Amazon EC2 instance in the public subnet via SSH with a key pair.

3. Execute an update to the operating system instance libraries by executing the following command:

sudo yum update -y

4. You should see an output showing the instance downloading software from the Internet and installing it.

5. Delete all resources created in this exercise.

Conclusion

Mastering exercises related to Amazon VPC not only prepares you better for the AWS Certified Solutions Architect exam but also equips you with vital skills for deploying and managing cloud infrastructure effectively. From creating and configuring VPCs to setting up route tables and network ACLs, each step in this process contributes to building a robust and secure network system. We hope this article boosts your confidence in applying the knowledge gained and continues your journey toward becoming an AWS expert.

If you have any questions or need further assistance, don’t hesitate to reach out to us. Best of luck on your path to becoming an AWS Certified Solutions Architect! AWS Certified Solutions Architect Exercises- part 3 Amazon VPC. Happy Clouding!!! Thank you for reading the DevopsRoles page!

sed command in Linux with Examples

The sed command is a stream editor for filtering and transforming text. In this tutorial, How to sed command in Linux with Examples.

The sed command-Line in Linux, which stands for “stream editor,” is a powerful text processing tool used for performing various text manipulations and transformations. It reads input line by line, applies specified operations, and outputs the result. Here are a few examples of how to use the sed command line:

Syntax

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

On the man page, the describes it

  • sed – modifies lines from the specified File parameter according to an edit script and writes them to standard output.
  • man sed – More details information about the sed command.

The sed command in Linux with Examples

For example, the file sed_test.txt as below

[huupv@DevopsRoles vagrant]$ cat sed_test.txt                                                                                                                                  
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Specify one or more NTP servers.

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

Append line

$ sed '/^pool 3/ a server ntp.devopsroes.com' sed_test.txt

Insert line

It will be added lines before the matching line.

$ sed '/^pool 3/i server ntp.devopsroles.com' sed_test.txt

Delete line

used d to delete matching lines. \s is escaped for regular expressions.

$ sed ' /^pool\s[0-9]\.ubuntu/d' sed_test.txt

How to write multi-line

There are two ways, use {} or other files.

Use {}

$ sed ' {
 /^pool 0/i server ntp.devopsroles.com
 /^pool\s[0-9]/d
 } ' ./sed_test.txt

create a ntp.sed file and read with the -f option.

The content ntp.sed file.

/^$/d
/^\s*#/d
/^pool 0/ i server ntp.devopsroles.com prefer
/^pool\s[0-9]\.ubuntu/d

Explain the above line.

/^$/d - Delete blank lines.
/^\s*#/d - Delete the line following # after any space including 0 (Delete comment line of #)

As a result

$ sed -f ntp.sed sed_test.txt

The backup file before changing the original file has been modified.

$ sed -i.bak -f ntp.sed ntp.conf

Print specific lines from a file

sed -n '2,5p' input_file

Delete lines matching a pattern

sed '/pattern/d' input_file

Append text after a specific line

sed '/pattern/a\new_line' input_file

Conclusion

sed Linux is a simple command in Linux. It uses the number of lines of files. These are just a few examples of how to use the sed command in Linux.

The sed command offers a wide range of text manipulation capabilities, including search and replace, insertions, deletions, and more. Thank you for reading the DevopsRoles page!

Devops Tutorial

Exit mobile version