Linux Grep或Awk查找字符串并存储到数组中
我想按以下模式打印字符串。我想把它存储在一个数组中。请帮帮我,我需要如下订单Linux Grep或Awk查找字符串并存储到数组中,awk,grep,extract,Awk,Grep,Extract,我想按以下模式打印字符串。我想把它存储在一个数组中。请帮帮我,我需要如下订单 test11 orcl 我的命令/尝试 egrep -i ":Y|:N" /etc/oratab | cut -d":" -f1 | grep -v "\#" | grep -v "\*" | tr -d '\n' | sed 's/ /\n/g' | awk '{print $1}' 以上命令O/p: test11orcl Oratab的内容如下: [oracle@rhel6112脚本]$cat/etc/ora
test11
orcl
我的命令/尝试
egrep -i ":Y|:N" /etc/oratab | cut -d":" -f1 | grep -v "\#" | grep -v "\*" | tr -d '\n' | sed 's/ /\n/g' | awk '{print $1}'
以上命令O/p:
test11orcl
Oratab的内容如下:
[oracle@rhel6112脚本]$cat/etc/oratab
#
#此文件由ORACLE实用程序使用。它是由root.sh创建的
#并在创建时由数据库配置助手更新
#数据库。
#冒号“:”用作字段终止符。新行终止
#条目。以磅符号“#”开头的行是注释。
#
#参赛作品的形式如下:
#$ORACLE\u SID:$ORACLE\u HOME::
#
#不允许具有相同$ORACLE_SID的多个条目。
#
#
test11:/u01/app/oracle/product/11.2.0/dbhome\u 1:N
orcl:/u01/app/oracle/product/10.2.0/db_1:N
Cat输出结束
从上面的文件中,我试图提取:/
之前的字符串作为开始,请尝试以下操作:
$ cat input.txt
test11:/u01/app/oracle/product/11.2.0/dbhome_1:N
orcl:/u01/app/oracle/product/10.2.0/db_1:N
$ awk -F: '{print $1}' input.txt
test11
orcl
更新
使用bash:
#!/bin/bash
ARRAY=()
while read -r line
do
[[ "$line" = \#* ]] && continue
data=$(awk -F: '{print $1}' <<< $line)
ARRAY+=($data)
done < input.txt
for i in "${ARRAY[@]}"
do
echo "$i"
done
您还可以使用
sed
sed -r 's/^([^:]*):.*$/\1/g' file
示例:
$ cat cc
test11:/u01/app/oracle/product/11.2.0/dbhome_1:N
orcl:/u01/app/oracle/product/10.2.0/db_1:N
$ sed -r 's/^([^:]*):.*$/\1/g' cc
test11
orcl
或
谢谢,但是当我把它放入shell脚本时,我不能打印相同的内容。它的打印方式如下:test11 orcl My shell script:osid=`egrep-i':Y|:N“$loc|u ora | cut-d”:“-f1 | grep-v”\\#“| grep-v”*”| sed-r's/^([^:]*):.$/\1/g',我不理解你使用shell脚本的意图。上面的AWK不是为您工作吗?我尝试使用AWK如下,AWK-F:“{打印$1 }”/ETC/ORATAB O/P OracATB的全部内容正在打印,然后打印出2个字符串。我看,如果忽略以“代码< > <代码> >开始的行,您可以使用‘AWK-F:/^ ^ / {NeX}{打印1美元}输入。TXT’OK,我可以删除空白区吗?为什么呢?因为我需要将每个字符串存储到一个数组中,这样我就可以从该文件中创建一个字符串列表。谢谢,但是当我在脚本中执行相同操作时,我无法提取特定的字符串。osid=`egrep-i:Y |:N”/etc/oratab | cut-d:“-f1 | grep-v”\\#“| grep-v”*“| sed-r's/^([^::]*):.$/\1/g'/etc/oratab因为oratab文件有很多注释行,因此,我只想从该文件的N行中提取字符串。张贴
/etc/oratab
文件的确切内容,并从中提出另一个问题。请张贴问题中的内容@Karthiksingdba如果没有
,我将编辑它。发布cat命令的精确输出。@KarthikSinghDBA查看我的上一次编辑。它将根据您的输入工作。
sed -r 's/^([^:]*):.*$/\1/g' file
$ cat cc
test11:/u01/app/oracle/product/11.2.0/dbhome_1:N
orcl:/u01/app/oracle/product/10.2.0/db_1:N
$ sed -r 's/^([^:]*):.*$/\1/g' cc
test11
orcl
$ sed -nr 's/^(.*):\/.*$/\1/p' file
test11
orcl