0

コロンで区切られたテキスト ファイルがあるとします。を使用してテキスト ファイル全体または特定の列を表示する方法を理解していますawk。しかし、私がやりたいことは、awk出力を取得してから、シェルスクリプトを使用して独自のテキストを追加して表示することですか? たとえば、テキスト ファイルが次のようになっているとします。

England:London:GMT
USA:Washington:EST
France:Paris:GMT

私がしたいのは、この入力を以下の形式で表示することです。

COUNTRY: England
CAPITOL: London
TIMEZONE: GMT

COUNTRY: USA
CAPITOL: Washington
TIMEZONE: EST

COUNTRY: France
CAPITOL: Paris
TIMEZONE: GMT
4

5 に答える 5

3

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

awk -F: '{printf "COUNTRY: %s\nCAPITOL: %s\nTIMEZONE: %s\n\n",$1,$2,$3}'

次のトランスクリプトによると:

pax> echo 'England:London:GMT
...> USA:Washington:EST
...> France:Paris:GMT' |awk -F: '
...>     {printf "COUNTRY: %s\nCAPITOL: %s\nTIMEZONE: %s\n\n",$1,$2,$3}'
COUNTRY: England
CAPITOL: London
TIMEZONE: GMT

COUNTRY: USA
CAPITOL: Washington
TIMEZONE: EST

COUNTRY: France
CAPITOL: Paris
TIMEZONE: GMT
于 2012-04-07T05:39:01.253 に答える
2

余分なデータを簡単に印刷できます。

awk -F: '{ print "COUNTRY: " $1;
           print "CAPITOL: " $2;
           print "TIMEZONE: " $3;
           print "";
         }' text_file

プレーンprintは、印刷するものに改行を追加します。ではawk、文字列の連結は、文字列 (または変数) を互いに隣接させて配置することによって行われます。コンマやその他の演算子は必要ありません。

于 2012-04-07T05:25:07.483 に答える
1

awkなしでそれを行うことができます:

<FILE  tr : '\n' | 
    xargs printf "COUNTRY: %s\nCAPITOL: %s\nTIMEZONE: %s\n\n" 

ここで、FILE はデータ ファイルです。

于 2012-04-07T10:59:21.933 に答える
0

コードをブロックしながら、シェルで awk を使用できます。

  cat text | while read line 
  do
      echo $line | awk -F: '{print "COUNTRY: ", $1, "\nCAPITOL: ", $2, "\nTIMEZONE: ", $3, "\n"}'
  done
于 2012-04-08T14:06:18.250 に答える
0

これはあなたのために働くかもしれません:

sed 's/^/COUNTRY: /;s/:/\nCAPITOL: /2;s/:/\nTIMEZONE: /3;$!s/$/\n/' file
于 2012-04-07T12:36:09.913 に答える