Согласно https://superuser.com/questions/555918/how-do-i-list-all-the-files-not-owned-by-any-package-in-a-rpm-based-system, следующая команда является надежной основой для того, что вам нужно:
comm -13 <(rpm -qla | sort) <(find / -type f | sort)
Выполните дальнейшую настройку, отфильтровав команду поиска по интересующим каталогам (либо указав список каталогов вместо /
(, например./{usr,bin}
)или за исключением таких папок, как /proc
, /dev
, /home
и /tmp
.
Сawk
:
awk \
-v pattern='^title AHS - abc Linux Servers' \
-v ip="$ip" \
-v hostname="$hostname" \
'
$0 ~ pattern {r=NR+2}
r==NR {printf "%s %s\n",ip,hostname}
1
' file
Примечание:
awk \
-v pattern='title AHS - abc Linux Servers' \
-v ip='0.0.0.0' \
-v host='test' \
'$0 ~ "^"pattern"$" { getline; print; print ip, host; next; }1' infile
awk -- '
BEGIN{ pattern=ARGV[1]; host=ARGV[2]; ip=ARGV[3]; ARGV[1]=ARGV[2]=ARGV[3]=""; };
$0 ~ "^"pattern"$" { getline; print; print ip, host; next; }1' "$1" "$2" "$3" infile
Мы можем сделать это с помощью sed
, но прежде чем мы вызовем sed, нам нужно настроить несколько вещей.
Поскольку sed обрабатывает все строки как регулярное выражение, мы должны экранировать любой символ в клиентской переменной, прежде чем вставлять его в наш код sed.
Создайте временный файл, содержащий данные об IP-адресе и имени хоста. Это нужно для чтения этого файла в поток вывода sed в соответствующее время. Обратите внимание, что этот метод избавляет нас от необходимости экранировать какие-либо специальные символы (BRE )в правой части операции s///.
esc_client=$(
printf '%s\n' "$client" |
sed -e '
s:[][\/.^$*]:\\&:g
s/[[:blank:]][[:blank:]]*/[[:blank:]][[:blank:]]*/g
'
)
tmpf=$(mktemp)
printf '%s %s\n' "$ip" "$hostname" > "$tmpf"
sed -e "
/^$esc_client/!b
n;n;r $tmpf
d
" file
#!/bin/bash
j=$1
l=$2
m=$3
echo $j
o=`awk -v j="$j" '$0 ~ j{print NR}' filename`
o=$(($o+2))
sed -i ''$o'i '$l' '$m'' filename
Tested and worked fine
output
sh script.sh "title AHS - abc Linux Servers" "hostname" "10.0.0.1"
praveen:/tmp$ cat p
#
# AHS - ABC Linux CBTS
#
subparent AHS_ABC_NIX AHS_abct_NIX_CIN CBTS
title AHS - abc Linux Servers <---this is what I want to search in text file
group-sorted
hostname 10.0.0.1
10.34.73.111 lkut # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.34.73.111 lkut0 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.10.10.10 lkut1 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.10.10.10 lkut2 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.10.10.10 lkut3 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.48.12.131 lkut4 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
10.48.12.57 lkut5 # testip "TRENDS:*,netstat:netstat|netstat1|netstat2|netstat3"
Питон
#!/usr/bin/python
import re
import sys
z=[]
l=sys.argv[1]
k=open('filename','r')
q=k.readlines()
for b in q:
z.append(b.strip())
o=z.index(l)
o=o+2
c=sys.argv[2]+" "+sys.argv[3]
z.insert(o,c)
for g in z:
print g.strip()