===== Print nth line from file ===== sed 'Nq;d' file.txt ===== Prepend text to beginning of file ===== echo "new content" | cat - file.txt > temp mv temp file.txt sed -i '1s/^/new content\n/' file.txt ===== Remove lines containing only whitespace ===== sed -i '/^\s*$/d' file.txt ===== Delete nth line from file ===== # N should be the target line number sed -i 'Nd' file.txt ===== Replace an entire line in file by line number ===== # N should be the target line number sed -i 'Ns/.*/replacement-line/' file.txt ===== Heredoc ===== cat << EOF > file.txt The current working directory is $PWD. You are logged in as $(whoami). EOF ===== Plain-print the difference between two files ===== Suppose we have two files: ''%%packages.fedora%%'' and ''%%packages%%''. ''%%packages.fedora%%'': autossh bash-completion bat bc borgmatic bzip2 cmake curl diff-so-fancy diffutils dnf-plugins-core ''%%packages%%'': bash-completion bc bzip2 curl diffutils dnf-plugins-core To plain-print the lines that exist in ''%%packages.fedora%%'' but do not exist in ''%%packages%%'': comm -23 <(sort packages.fedora) <(sort packages) Output: autossh bat borgmatic cmake diff-so-fancy * The ''%%comm%%'' command compares two sorted files line by line. * The ''%%-23%%'' flag is shorthand for ''%%-2%%'' and ''%%-3%%''. * ''%%-2%%'' suppresses column 2 (lines unique to ''%%packages%%''). * ''%%-3%%'' suppresses column 3 (lines that appear in both files). ===== Split large text file into smaller files with equal number of lines ===== split -l 60 bigfile.txt prefix- ===== Loop through lines of file ===== while read line; do echo "$line"; done ===== Use grep to find URLs from HTML file ===== cat urls.html | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" ===== Use Awk to print the first line of ps aux output followed by each grepped line ===== To find all cron processes with ''%%ps aux%%'': ps aux | awk 'NR<2{print $0;next}{print $0 | grep "cron"}' | grep -v "awk"