awkで引用符文字を印刷する方法

awkで引用符文字を印刷する方法

str.txt次のサンプルレコードを含むファイルがあります。

31,2713810299,1,11-Aug-15 19:52:10
32,2713810833,1,11-Aug-15 21:36:18

ここで、以下のようにawkを使用して出力を印刷したいと思います。

cat str.txt|awk -F, '{print substr("$4",1,9)}' -

出力は次のようになります。

'11-Aug-15' 
'11-Aug-15' 

答え1

一重引用符は\x27

awk -F, '{print "\x27"substr($4,1,9)"\x27" }'

答え2

POSIX的に:

awk -F'[ ,]' -v q="'" '{print q$4q}' <file

答え3

POSIX Awkの場合、アプローチは少し異なります。

awk -F'[, ]' '{printf "\047%s\047\n", $4}' file
'11-Aug-15'
'11-Aug-15'

答え4

awk次のコマンドを使用できます。

cat str.txt|awk -F, '{print substr($4,1,9)}' -

次の出力を取得します。

11-Aug-15
11-Aug-15

行の先頭と末尾に一重引用符が必要な場合は、次のようにします。

cat str.txt|awk -F, '{printf "\047%s\047\n",substr($4,1,9)}' -

次の出力を取得します。

'11-Aug-15'
'11-Aug-15'

関連情報