1. shell字符串 双引号
双引号的优点:双引号里可以有变量
双引号里可以出现转移字符
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
单引号字符串中不能出现单引号(对单引号使用转义符后也不行)
2. shell显示变量
read命令从标准输入中读取一行,并把输入行的每个字段的只指定给shell变量:
#!/bin/sh
read name
echo "$name It is a test"
3. 显示命令执行结果
echo `date`
这里使用的是反引号`,而不是单引号
结果是显示当前日期:
Thu Jul 24 10:10:10 CST 2017
正好自己可以运行下刚好碰到的任务:
test.sh:
#!/bin/bash
hivesql="insert ovewrite local directory '/tmp/test' row format delimited fields terminated by '|' select * from test where id='001' "
while read id;do
f=$f" or id='$id' "
done
hivesql=$hivesql $f
echo $hivesql
输入命令行: cat 某.txt | ./test.sh 即可查看管道输入文件内容拼接好的hivesql变量。
shell语句
$(cat ${configFile} | awk -F '|' '{if($1 == "pro"){print $2}}')
以'|'为分隔符,读取${configFile}中的内容,如果第一个字段为'pro' 读取第二个字段。
eg: pro|guangdong shanghai beijing zhejiang sichuan hunan hubei
AWK的工作原理:
awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。
(1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里
(2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)
(3)输出的时候按照内置变量OFS(out FS),输出
(4)读入下一行继续操作
简单实例
[root@tx3 ~]# echo "this is a book" > awk.txt
[root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt
is this a book
在python2的字符编码问题时常会遇到“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)”的编码错误。
而用以下方法通常可以解决:
1 import sys 2 reload(sys) 3 sys.setdefaultencoding('utf-8')
仅供个人初学习,记录。