zoukankan      html  css  js  c++  java
  • shell脚本简单学习教训经验

    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')

    仅供个人初学习,记录。

  • 相关阅读:
    设计模式 创建型 单例模式
    设计模式 创建型 抽象工厂模式
    设计模式六大原则
    设计模式 创建型 工厂方法模式
    设计模式 创建型 简单工厂模式
    Junit TDD
    覆盖索引
    多列索引 单列索引
    JDBC PreparedStatement Statement
    常用·SQL
  • 原文地址:https://www.cnblogs.com/wangzhaoshuang/p/7406657.html
Copyright © 2011-2022 走看看