• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            awk中如何輸出單引號

            Posted on 2010-01-11 14:38 Prayer 閱讀(2207) 評論(0)  編輯 收藏 引用 所屬分類: Shell
            最近在用awk拼寫一段sql語句時,遇到了 單引號不能輸出的 問題 。
            實在讓人很困惑 !
            awk中如何輸出單引號 如何在awk中打印輸出單引號呢 shell如何處理單引號呢 ?
            也就是shell中對單引號的處理問題

            解決辦法
            awk '{   print "   ' \' ' "}'
            把轉義的單引號 ‘ ,用兩個單引號括起來,使其不執行

            原因是 :括在雙引號中的三種特殊字符不被忽略:$,\,` ,即雙引號會解釋字符串的特別意思,而單引號直接使用字符串輸出.

            那么shell如何處理特殊字符的呢
            1. 單引號 ( ' ' )
            如果我們想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep會把Goldberg和phonebook當作需要搜索的文件
            howard@0[script]$ grep 'Susan Gold' phonebook
            Susan Goldberg 403-212-4921
            當shell碰到第一個單引號時,它忽略掉其后直到右引號的所有特殊字符
            2. 雙引號 ( " " )
            雙引號作用與單引號類似,區別在于它沒有那么嚴格。單引號告訴shell忽略所有特殊字符,而雙引號只要求忽略大多數,具體說,括在雙引號中的三種特殊字符不被忽略:$,\,` ,即雙引號會解釋字符串的特別意思,而單引號直接使用字符串.如果使用雙引號將字符串賦給變量并反饋它,實際上與直接反饋變量并無差別。如果要查詢包含空格的字符串,經常會用到雙引號。
            howard@0[script]$ x=*
            howard@0[script]$ echo $x
            hello.sh menus.sh misc.sh phonebook tshift.sh
            howard@0[script]$ echo '$x'
            $x
            howard@0[script]$ echo "$x"
            *
            這個例子可以看出無引號、單引號和雙引號之間的區別。在最后一種情況中,雙引號告訴shell在引號內照樣進行變量名替換,所以shell把$x替換為*,因為雙引號中不做文件名替換,所以就把*作為要顯示的值傳遞給echo。
            對于第一種情況需要進一步說明,shell在給變量賦值時不進行文件名替換(這從第三種情況中也能看出來),各步驟發生的精確次序如下:
            shell掃描命令行,把x的值設為星號*;
            shell再次掃描命令行,碰到星號*,把它替換成當前目錄下的文件清單;
            shell啟動執行echo命令,把文件清單作為參數傳遞給echo.
            這個賦值的先后次序非常重要:shell先作變量替換,然后作文件名替換,最后把這行處理為參數
            3. 反引號(``)
            命令替換是指shell能夠將一個命令的標準輸出插在一個命令行中任何位置。shell中有兩種方法作命令替換:把shell命令用反引號或者$(...)結構括起來,其中,$(...)格式受到POSIX標準支持,也利于嵌套。
            howard@0[script]$ echo The date and time is `date`
            The date and time is 三 6月 15 06:10:35 CST 2005
            howard@0[script]$ echo Your current working directory is $(pwd)
            Your current working directory is /home/howard/script
            4. 反斜杠 backslash-escaped( \ )
            反斜杠一般用作轉義字符,或稱逃脫字符,linux如果echo要讓轉義字符發生作用,就要使用-e選項,且轉義字符要使用雙引號
            echo -e "\n"

            反斜杠的另一種作用,就是當反斜杠用于一行的最后一個字符時,shell把行尾的反斜杠作為續行,這種結構在分幾行輸入長命令時經常使用。
             
             
             
             
            其它解決方案:
            1. printf("%c",39)
            2. echo "aa"|awk '{print "\047"}'
            3. cat filename | awk "{printf \"Var1='%s',Var2='%s'\n\",\$1,\$2}"
            4. 查看當前系統的字符對應的asci代碼
              (1) showkey -a
              (2) man ascii

            原文地址:http://blog.chinaunix.net/u1/52658/showart_420769.html

            久久综合色之久久综合| www.久久99| 午夜精品久久久久久99热| 久久青青草原精品国产| 国产精品久久精品| 人妻无码精品久久亚瑟影视| 久久精品午夜一区二区福利| 国内精品久久久久久中文字幕| 无码人妻久久一区二区三区蜜桃| 久久人人妻人人爽人人爽| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 91精品国产高清久久久久久io| 国产一区二区三精品久久久无广告 | 亚洲精品国精品久久99热| 91视频国产91久久久| 欧美成人免费观看久久| 日本精品久久久久中文字幕8| 久久久久久久久波多野高潮| 久久99精品久久久久久噜噜 | 精品久久久久中文字幕日本| 一级做a爱片久久毛片| 国产V亚洲V天堂无码久久久| 久久免费看黄a级毛片| 亚洲欧美另类日本久久国产真实乱对白 | 无码人妻精品一区二区三区久久 | 久久午夜免费视频| 久久精品国产黑森林| 99久久成人18免费网站| 91精品国产91久久久久久| 国产精品久久精品| 女人香蕉久久**毛片精品| 久久66热人妻偷产精品9| 久久人妻少妇嫩草AV无码专区| 亚洲国产精品一区二区久久hs| 欧美亚洲国产精品久久久久| 色婷婷综合久久久久中文字幕| 久久精品国产99久久香蕉| 亚洲欧美日韩久久精品| 久久无码高潮喷水| 久久精品水蜜桃av综合天堂| 伊人久久精品无码av一区|