最近客户的API 导入的数据,最后发现几万条合并成一条了。每个事件都是用 {} 分开的。
其实利用:echo $file | awk 'BEGIN{ FS="{" ; RS="}" } NF>1 { print $NF }' 就可以分割。
1: 下面附上另外三种 :小括号,中括号,大括号 的分割方法:
[root@localhost ~]# var="aaa(boot)bbbsdl(grub)fjjkdsjk(good)aadsff"
[root@localhost ~]# echo $var
aaa(boot)bbbsdl(grub)fjjkdsjk(good)aadsff
[root@localhost ~]# echo $var | awk 'BEGIN{ FS="(" ; RS=")" } NF>1 { print $NF }'
boot
grub
good
linux shell取中括号[]之内的内容
[root@localhost ~]# var="aaa[boot]bbbsdl[grub]fjjkdsjk[good]aadsff"
[root@localhost ~]# echo $var
aaa[boot]bbbsdl[grub]fjjkdsjk[good]aadsff
[root@localhost ~]# echo $var | awk 'BEGIN{ FS="[" ; RS="]" } NF>1 { print $NF }'
boot
grub
good
linux shell取大括号{}之内的内容
[root@localhost ~]# var="aaa{boot}bbbsdl{grub}fjjkdsjk{good}aadsff"
[root@localhost ~]# echo $var
aaa{boot}bbbsdl{grub}fjjkdsjk{good}aadsff
[root@localhost ~]# echo $var | awk 'BEGIN{ FS="{" ; RS="}" } NF>1 { print $NF }'
boot
grub
good
--
2: 另外附上 API 导入数据的shell:
#!/bin/bash
#rm -rf /tmp/abc/*
log_year=$(date -d "now" +%Y)
log_month=$(date -d "now" +%m)
log_day=$(date -d "now" +%d)
log_path="/abc/"
log_year_path="$log_path$log_year/"
log_month_path="$log_year_path$log_month/"
log_day_path="$log_month_path$log_day/"
if [ ! -d $log_day_path ]; then
if [ ! -d $log_month_path ]; then
if [ ! -d $log_year_path ]; then
mkdir $log_year_path
chown root:splunk $log_year_path
fi
mkdir $log_month_path
chown root:splunk $log_month_path
fi
mkdir $log_day_path
chown root:splunk $log_day_path
fi
url='http://abc.com/api'
data=`curl $url`
echo $data | awk 'BEGIN{ FS="{" ; RS="}" } NF>1 { print $NF }' > /tmp/abc/name_list.json
chown root:splunk /tmp/abc/*
mv /tmp/abc/* $log_day_path



