コミュニティ/Netnews 斜め読み

トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

comp.lang.awk

  • Netnews の comp.lang.awk を適当に日本語訳して抜粋してあります。(本当に適当です)
  • 書き込んだ人の名前の部分はオリジナルの投稿者の名前に変更させていただきましたが、時間までは変更していません。詳しくは、comp.lang.awk を購読していただくか、Google グループの comp.lang.awk などで確認してください。
  • 件数が増えてきたら古いものから順に過去ログに移動します。過去ログは [complangawk] から参照できます。

最近のタイトル一覧

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ]

comp.lang.awk

お名前
件名
本文

how to join lines - s99999999s2003 (2006年05月25日 01時21分05秒)

abcdefghijk
lmnopqrstuvwxyz

abcdefghijklmnopqrstuvwxyz

にするにはどうすればいいですか?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/6707881f1621cf72/81f5fe3cc3eedccb?hl=ja#81f5fe3cc3eedccb


Re: - Loki Harfagr (2006年05月25日 01時21分53秒)

bash で以下のようにできます。

$ cat MISCFILES/ty
abcdefghijk
lmnopqrstuvwxyz

bash-3.1$ unset myvar
bash-3.1$ myvar=$(awk '1' ORS= MISCFILES/ty)
bash-3.1$ echo $myvar
abcdefghijklmnopqrstuvwxyz

Re: - Chris F.A. Johnson (2006年05月25日 01時23分09秒)

var=$( awk '{ printf "%s", $0 }
     NR == 2 { printf "\n" }' "$FILE" )

のようにもできますが、shell の方が早いです。

{
  read a
  read b
} < "$FILE"
var=$a$b

{{comment multi|w}}

block-based editing - aryzhov (2006年05月25日 01時16分05秒)

*****
whatever
... good pattern ...
whatever
*****
whatever
whatever
... good pattern ...
whatever
*****
... bad pattern ...
whatever
*****
whatever
..good  pattern
whatever
*******

のようなインプットがあって、**** で区切られており、これの bad pattern を全て抜き出したのです。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/6099834ea035d288/92d1161ec2c391a2?hl=ja#92d1161ec2c391a2


Re: - Loki Harfagr (2006年05月25日 01時17分18秒)

"*" は特殊なのでここでは "+" として話をします。

$ gawk  '/good pattern/' RS=+++++

のようにしてできます。

Re: - aryzhov (2006年05月25日 01時17分59秒)

以下のようにしてできました。

gawk '/^[*][*]*[*]$/ {printf "++\n"}; {print}' | gawk '!/bad-pattern/'
RS=++

Re: - Ed Morton (2006年05月25日 01時19分52秒)

  • /^[*][*]*[*]$/ は /^[*]+$/ にできます。
  • printf "++\n" は print "++" にできます。
  • ; {print} は 1 にできます。

また、以下を最後に加えてください。

gawk '/^[*]+$/{print "++";next}1'

{{comment multi|w}}

substituting a variable in sed - eight02645999 (2006年05月25日 01時12分15秒)

variable="somestring"
sed 's/foo/$variable/' somefile

のようなことはできますか?

sed "s/foo/$variable/" somefile

とやってもうまくできません。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/cef07ba5ab4eae0d/9d2ea47a47ae100f?hl=ja#9d2ea47a47ae100f


Re: - Ed Morton (2006年05月25日 01時13分06秒)

もしも awk でやるのであれば、

awk -v var="$variable" '{sub(/foo/,var)}1' somefile

のようにします。

sed や他の shell であれば、comp.unix.shell にポストしてください。

{{comment multi|w}}

extract output from a file.... - bshah (2006年05月25日 01時10分27秒)

"username permission" "username permission" ... となっているファイルがあり、これを以下のようにします。

rherbert
amorris
mhung
eowen 

ファイルは以下のようになっています。

rherbert        lrswipcd        amorris lrswipcd        mhung
lrswipcd
 eowen  lrswipcda
jconner lrswipcd        hoangvn lrswipcd        rherbert
lrswipcd
 ktower lrswipcd        amorris lrswipcd        phamt   lrswipcd
veronic
a       lrswipcd        scoleman        lrswipcd        mhung
lrswipcd
 eowen  lrswipcda       kgrimmer        lrswipcd
deasy   lrs
echu    lrswipcd        tcoleman        lrswipcd        bhedberg
lrswipc
d       gwright lrswipcd        damondc lrswipcd        ajeung
lrswipcd
 schmidts       lrswipcd        rsayo   lrswipd rosanne
 damondc lrs 

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/b26eb0b24d87e0a0/6920be7094e97f2a?hl=ja#6920be7094e97f2a


Re: - pop (2006年05月25日 01時10分50秒)

awk '{for(i=1;i<NF;i+=2){print $i}}' file

とします。

{{comment multi|w}}

help with connecting two awk statements - rogv24 (2006年05月25日 01時06分30秒)

awk '{ printf "%10s\t %8s\t %5s\t %8s\t" , $1, $2, $3, $4 }'
/tmp/uname.out  >> /tmp/output1
awk '{ printf "%10s\t %10s\t %8s\n" , $1, $2, $3 }' /tmp/outo  >>
/tmp/output1

とした場合に、2 つめは 2 行目からスタートします。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/018862419ee96f33/9e540d6022343c7c?hl=ja#9e540d6022343c7c


Re: - Loki Harfagr (2006年05月25日 01時07分41秒)

$ awk '{print "First";exit}' /tmp/____ ; awk '{print "Last";exit}' /tmp/____
First
Last

となってしまうということですよね。

$ awk '{print "First";exit}' ORS=" " /tmp/____ ; awk '{print "Last";exit}' /tmp\
/____
First Last

のようにしてみてください。

{{comment multi|w}}

print from a field to EOL - kpcamp (2006年05月25日 00時58分25秒)

3 番目のフィールドと 9 番目から最後までのフィールドを表示します。

while read line;do
    ls -ltr "${line}" |awk {'print$3":"$9'}  #Need to have $9 to EOL
done < $file

それぞれの行は以下のようなものです。

-rw-rw-rw-   1 userid  groupid  4497952 May 16 09:31
/Volumes/Neuro/Neurogenomics/Neurodegenerative Unit/Staff/tom jones/Red
Hot Chili Peppers/Stadium Arcadium [Disc 1]/1-08 Torture Me.mp3

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/d268266bb86ea69b/9610a99c5bafa743?hl=ja#9610a99c5bafa743


Re: - Harlan Grove (2006年05月25日 00時59分42秒)

ls の表示であれば固定長なので、substr() で $0 を処理してから $9 とした方がよいでしょう。

Re: - Harlan Grove (2006年05月25日 01時00分22秒)

例えば、こんな感じです。

awk '{ print $3 ":" substr($0, 54) }'

Re: - Chris F.A. Johnson (2006年05月25日 01時01分28秒)

while read line;do
   ls -ltr "${line}"
done < "$file" | tr -s ' ' | cut  -d ' ' -f3,9-

のようにするか、

IFS='
'
ls -ltr $( cat "$file" ) | tr -s ' ' | cut  -d ' ' -f3,9-

のようにします。

最近の ls は固定長になっています。

Re: - Klaus Alexander Seistrup (2006年05月25日 01時02分27秒)

#v+

  while read f1 f2 f3 f4 f5 f6 f7 f8 rest
  do
    echo "${f3} ${rest}"
  done

#v-

のようにします。

Re: - Klaus Alexander Seistrup (2006年05月25日 01時02分50秒)

#v+

  while read f1 f2 f3 f4 f5 f6 f7 f8 rest
  do
    echo "${f3} ${rest}"
  done

#v-

のようにします。

Re: - Eric Pement (2006年05月25日 01時03分42秒)

  ... | awk '{print substr($0,15,8), substr($0,52)}'

のようにしてみてください。

{{comment multi|w}}

Comparing two numeric values - brien.pirkle (2006年05月24日 01時11分13秒)

デビッドカードとクレジットカードを分けるのに d と c を使っています。d, c に続く整数の数字を数え上げて差を取ると、

0.00000000000054675645

となってしまいます。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/4225816818ccd23e/db7dc55b3564c863?hl=ja#db7dc55b3564c863


Re: - Harlan Grove (2006年05月25日 00時54分52秒)

古い浮動小数点丸めエラーです。

if (int((dr_sum - cr_sum) * 100) == 0)

のようにしてみてはどうでしょうか。

Re: - martin cohen (2006年05月25日 00時56分10秒)

abs(dr_sum - cr_sum) < .001

のようにしてはどうでしょうか?

int() には丸め誤差があります。

{{comment multi|w}}

Sparsh_loves_you - selecting a field from a record (2006年05月24日 01時05分55秒)

record="EXSR      U@DMSG^CALLP     U@PRINTLOGMSG^^";

というレコードの値があります。この "EXSR U@DMSG" という部分を取り出します。

record="EXSR      U@DMSG^CALLP     U@PRINTLOGMSG^^";
search_string=`echo $record | awk 'FS="^" {print $1}''`;echo
"$search_string"

として出力されるものは 1 つのスペースしかありません。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/3dd02832e4a520eb/e22e7ca6329d9470?hl=ja#e22e7ca6329d9470


Re: - Jens Borchert Pedersen (2006年05月24日 01時06分51秒)

split($0, Array, "^")
print Array[1]

とすることで取り出すことができます。

Re: - Bill Seivert (2006年05月25日 00時53分37秒)

例えば、

search_string=`echo "$record" | awk 'FS="^" {print $1}'`;echo
"$search_string"

のようにもできます。

{{comment multi|w}}

Is there an *awk with eval()? - dfeustel (2006年05月24日 00時59分31秒)

$($array[3]) のようなことをやりたいのですが、awk には eval() がないようです。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/7a39775cd2ef95e1/2e4a0d2bca370fcd?hl=ja#2e4a0d2bca370fcd


Re: - Kenny McCormack? (2006年05月24日 01時00分23秒)

function eval(s) { print "eval(s) =",s }
BEGIN { eval("This is a test") }

のようにして eval() を作ることができます。

Re: - Harlan Grove (2006年05月24日 01時01分27秒)

eval("1+2") のような場合にはどうやるんですか?その eval() では何も解決できませんよ。

Re: - Kenny McCormack? (2006年05月24日 01時02分28秒)

でも彼*の回答にはなっていますよ。

{{comment multi|w}}

awk and assign output to a variable - rogv24 (2006年05月24日 00時53分04秒)

出力を変数指定することはできますか?

awk '{print $1 }' file.one?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/738bf42e5fcfb1bb/5e36e966b329240d?hl=ja#5e36e966b329240d


Re: - Bob Harris (2006年05月24日 00時54分47秒)

ksh, bash または POSIX shell であれば、

variable=$(awk '{print $1}' file.one)

または

   set -- $(awk '{print $1, $2, $3}' file.one)
   var1=$1
   var2=$2
   var3=$3

ででき、csh, tcsh であれば、

   variable=`awk '{print $1} file.one`

または

   set -- `awk '{print $1, $2, $3}' file.one`
   var1=$1
   var2=$2
   var3=$3

でできます。

Re: - Chris F.A. Johnson (2006年05月24日 00時55分46秒)

var=`awk '{print $1 }' file.one`

としてできます。

Re: - rogv24 (2006年05月24日 00時57分08秒)

sunos= `awk '{print $2, $3 }' /tmp/out7`

としましたが、Solaris でエラーになります。

Re: - Chris F.A. Johns (2006年05月24日 00時58分00秒)

"=" の前後にスペースは不要です。

sunos=`awk '{print $2, $3 }' /tmp/out7`

{{comment multi|w}}

help in selecting field - rogv24 (2006年05月23日 01時04分26秒)

4 行目の 2 つめのフィールドを抜き出したいのですが、以下のもので動作しません。

awk ('NR==4' && '{print $2}') /tmp/info4

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/e0726e12446dfd33/fc1d35a3dab9faf0?hl=ja#fc1d35a3dab9faf0


Re: - Chris F.A. Johnson (2006年05月24日 00時51分40秒)

awk 'NR == 4 { print $2; exit }' /tmp/info4

でできます。

{{comment multi|w}}

Help is parsing line - ram (2006年05月23日 01時01分53秒)

"first second [third field within [\]] fourth

var1 = first
var2 = second
var3 = third field within \]
var4 = fourth

のようにしたいのですが、どうやればいいのでしょうか?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/0cc8a5105aa32ef9/22a1911863766349?hl=ja#22a1911863766349


Re: - Kenny McCormack? (2006年05月23日 01時02分36秒)

マニュアルに書いてあります。

Re: - John Savage (2006年05月28日 01時23分46秒)

$cat datafile
nextfirst   nextsecond [more in the \[this field\] too    ] fourthfield

$mawk '{th=$0;sub(/^[^[]*\[ */,"",th);sub(/ *][^[\]]*$/,"",th);print $1;
print $2;print th; print $NF}' data

nextfirst
nextsecond
more in the \[this field\] too
fourthfield

のようにしてできます。

{{comment multi|w}}

simple source formatting - be (2006年05月18日 01時39分29秒)

  if(blah)
  {
    funca();
  }

  if(blah) {
    funca();
  }

に変換したいのですが、awk や sed を使って Solaris でできますか?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/66955456dbda9a89/a7a2cb87d255b742?hl=ja#a7a2cb87d255b742


Re: - dbcat (2006年05月18日 01時40分04秒)

sed を使った方が簡単です。

sed '/if(.*)/{:t;N;/{/!bt;s/\n//g}' file

Re: - Ed Morton (2006年05月18日 01時42分15秒)

$ cat tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {
                 printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */
         if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment
         {
                 printf("yes!\n");
         }
}
$ sed '/if(.*)/{:t;N;/{/!bt;s/\n//g}' tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {         printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */       if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment     {
                 printf("yes!\n");
         }
}

これをやるには sed, shell, awk, perl ではなく、cb のような美しい方法がいいでしょう。

Re: - Ed Morton (2006年05月18日 01時42分37秒)

$ cat tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {
                 printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */
         if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment
         {
                 printf("yes!\n");
         }
}
$ sed '/if(.*)/{:t;N;/{/!bt;s/\n//g}' tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {         printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */       if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment     {
                 printf("yes!\n");
         }
}

これをやるには sed, shell, awk, perl ではなく、cb のような美しい方法がいいでしょう。

Re: - Ed Morton (2006年05月18日 01時43分27秒)

これをやるには sed, shell, awk, perl ではなく、cb のような美しい方法がいいでしょう。

$ cat tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {
                 printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */
         if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment
         {
                 printf("yes!\n");
         }
}
$ sed '/if(.*)/{:t;N;/{/!bt;s/\n//g}' tst.c
#include "stdio.h"

int main(void) {
         int a,b,c,d;

         if(a) {         printf("yes!\n");
         }

         if (b)
         {
                 printf("yes!\n");
         }

         /* if(or not) we embed an "if" matters */       if(c) {
                 printf("yes!\n");
         }

         if(d) // here's a C++-style comment     {
                 printf("yes!\n");
         }
}

Re: - Joe User (2006年05月18日 23時27分40秒)

ident で可能です。

indent -ce -br -brs -l90 -nbbo -hnl -bli0 -c33 -cd33 \
 -cs -cp33 -i2 -ce -pi1 -ss -npsl -bad -bap -st

{{comment multi|w}}

In awk -- how to 'cat' a file for it's value and update another file - onewayonlytojesus (2006年05月18日 01時32分53秒)

ひとつの変数を持ったファイル (schvoy) があり、多くの行のあるファイル (baplie) があります。$1 ~ /TDT/ の baplie の行をアップデートして、schvoy の値で $3 をアップデートしたいのです。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/6b897c9066d34d9c/20f1b5f8bdb56e72?hl=ja#20f1b5f8bdb56e72


Re: - Ed Morton (2006年05月18日 01時33分17秒)

awk 'NR==FNR{saved=$0;next}$1 ~ /TDT/{$3=saved}1' schvoy baplie

でできます。

Re: - onewayonlytojesus (2006年05月18日 01時34分32秒)

cat schvoy の値を awk で使いたいのです。

Re: - Ed Morton (2006年05月18日 01時35分02秒)

よく分かりませんが、こういうことでしょうか?

awk -v saved=`cat schvoy` '$1 ~ /TDT/{$3=saved}1' baplie

Re: - onewayonlytojesus (2006年05月18日 01時37分08秒)

baplie は以下のようなものです。

UNA:+.?
UNB+UNOA:2+BAL+ITO+060508:0607+368073+++++EIS
UNH+368073-838+BAPLIE:D:95B:UN:SMDG20
BGM++368073-838+9
DTM+137:0605080607:201
TDT+20+0309+++EIS:172:20+++:::SUN ROAD
LOC+5+USBAL:139:6
LOC+61+JPNGO:139:6
awk -F+ -v saved=`cat schvoy` '$1 ~ /TDT/{$3=saved}1' < baplie > baplieout

とした時のアウトプットは以下のとおりです。

UNA:+.?
UNB+UNOA:2+BAL+ITO+060508:0607+368073+++++EIS
UNH+368073-838+BAPLIE:D:95B:UN:SMDG20
BGM++368073-838+9
DTM+137:0605080607:201
TDT 20 081E   EIS:172:20   :::SUN ROAD
LOC+5+USBAL:139:6
LOC+61+JPNGO:139:6

Re: - Ed Morton (2006年05月18日 01時37分58秒)

awk -v saved=`cat schvoy` 'BEGIN{FS=OFS="+"}$1 ~ /TDT/{$3=saved}1' < baplie > baplieout

というのを試してみてください。

{{comment multi|w}}

square brackets problem - Dave.Kritzberg (2006年05月16日 23時29分49秒)

[NULL] を 0 にしようとしているのですが、sed でも awk でもうまく動作しません。

s/[NULL]/0/g
BEGIN {FS=OFS="\t"}
{
  { gsub("[NULL]","0",$22)
    print }
}
END {}
BEGIN {FS=OFS="\t"}
{
  { gsub("\[NULL\]","0",$22)
    print }
}
END {}

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/406595c21116404e/c68b5e5091d013f2?hl=ja#c68b5e5091d013f2


Re: - Kenny McCormack? (2006年05月16日 23時30分43秒)

{ gsub(/\[NULL\]/,0,$22)

でうまくいきます。

Re: - Robert Katz (2006年05月16日 23時31分30秒)

sed 's/\[NULL]/0/'

または、

awk 'sub(/\[NULL]/, "0")1'

でうまくいきます。

Re: - Robert Katz (2006年05月16日 23時31分46秒)

sed 's/\[NULL]/0/'

または、

awk 'sub(/\[NULL]/, "0")1'

でうまくいきます。

Re: - Robert Katz (2006年05月16日 23時32分09秒)

sed 's/\[NULL]/0/'

または、

awk 'sub(/\[NULL]/, "0")1'

でうまくいきます。

Re: - Robert Katz (2006年05月16日 23時32分55秒)

sed 's/\[NULL]/0/'

または、

awk 'sub(/\[NULL]/, "0")1'

でうまくいきます。

{{comment multi|w}}

Syslog parser using awk - Sriram (2006年05月14日 22時41分19秒)

Perl の Parse::Syslog のような syslog のパーサは awk にありますか?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/7368ba759a67164f/a1f0e7ac929cebf5?hl=ja#a1f0e7ac929cebf5


Re: - Patrick TJ McPhee? (2006年05月16日 23時27分06秒)

Parse::Syslog は分かりませんが、以下のようなものがあります。

function parse_syslog( a) {
    date = $1 " " $2
    time = $3
    machine = $4
    split($5, a, /[][]/)
    process = a[1]
    pid = a[2]
    split($0, a, /: /)
    text = a[2]
}

これは

  parse_syslog()
  if (process == "myproc" && time > "14:43" and time < "14:44")
    print

のようにして使います。

{{comment multi|w}}

regex issue - mickey (2006年05月13日 01時30分42秒)

"Char" ではじまるか ":" で終わる行があります。

if($0 ~ /:$/) {...} # doesn't work

としても動作しません。

if($0 !~ /^Char/) {...} #works fine.

とすれば動作します。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/c3e187c9830ae7a1/3a6c4caafe790e9c?hl=ja#3a6c4caafe790e9c


Re: - Ed Morton (2006年05月13日 01時31分26秒)

":" の後にスペースかコントロール文字はありませんか?

Re: - martin cohen (2006年05月14日 22時39分56秒)

読み込んだ後に、

sub(/\r$/, "")

を加えればよいでしょう。

{{comment multi|w}}

awk '(FNR > 1) {print $0}' files - kevincristo (2006年05月13日 01時26分16秒)

2 つのファイルがあります。

file1 は以下のものです。

Jasmine      | 10/12/2004 | 12/13/2004
Jasmine      | 10/12/2004 | 12/13/2004
Jasmine      | 10/12/2004 | 12/13/2004

file2 は以下のものです。

Rose           | 10/12/2004 | 12/13/2004
Rose           | 10/12/2004 | 12/13/2004
Rose           | 10/12/2004 | 12/13/2004

これを以下のファイルにします。

Jasmine      | 10/12/2004 | 12/13/2004
Jasmine      | 10/12/2004 | 12/13/2004
Jasmine      | 10/12/2004 | 12/13/2004
Rose         | 10/12/2004 | 12/13/2004
Rose         | 10/12/2004 | 12/13/2004
Rose         | 10/12/2004 | 12/13/2004
for files in file1,file2
do
awk '(FNR > 1) {print $0}' files
done

としても動きません。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/d4d69a70174f584b/d89ac424eeecde98?hl=ja#d89ac424eeecde98


Re: - Harlan Grove (2006年05月13日 01時27分01秒)

awk 'NR == 1 || FNR > 1' file1 file2

または

(cat file1; awk 'FNR > 1' file2)

を試してみてください。

Re: - kevincristo (2006年05月13日 01時27分46秒)

実際には 10 個のファイルがあります。

Re: - Harlan Grove (2006年05月13日 01時28分32秒)

awk 'NR == 1 || FNR > 1' file01 file02 file03 file04 file05 file06 file07 file08 file09 file10

または

(cat file01; awk 'FNR > 1' file02 file03 file04 file05 file06 file07 file08 file09 file10)

とすればよいでしょう。

Re: - Robert Katz (2006年05月14日 22時38分26秒)

awk 'BEGIN { n = 1 } ARGIND == n; { n = ARGIND }' file1 file2 ...

Re: - Robert Katz (2006年05月14日 22時38分49秒)

awk -v n=1 'ARGIND == n; { n = ARGIND }' file1 file2 file3

Re: - Loki Harfagr (2006年05月18日 01時29分34秒)

$ (for floop in YourListOfFilesAsYouLikeIt ; do <${floop} tac | head -n -1 ; done ; head -1 ${floop} ) | tac

とするか、

$ (for floop in YourListOfFilesAsYouLikeIt
do
    <${floop} tac | head -n -1
done
head -1 ${floop} )| tac

としてください。

{{comment multi|w}}

substitution of items - istrange63 (2006年05月13日 01時22分59秒)

BEGIN {
}
# read in CBARs into array I want changed
#      FILENAME == "orient_new_cbars.out"
      FILENAME == "tmp" {
       cbar [NR] = $0
       next
}
{print cbar[1]}

# search my INCL for CBARs
# check if found CBAR is in orient_new_cbars.out
# Yes substitute
# No skip and write out line

# $1   2   3   4  5  6  7  8
# CBAR EID PID GA GB x1 x2 x3

      {
# search out CBAR in incl files
       if (substr($0,1,4) == "CBAR") {
          if ( $0 in cbar )
          printf ("%-8s%8d%8d%8d%8d     0.0     0.0     1.0\n",
$1,$2,$3,$4,$5 )
       }
       else  {
         printf ("%-80s\n", $0 )
       }
      }

END {
      for (i = 1; i <= 2; ++i)
      print cbar[5223] > "zz"

}

というファイルがあり、ファイルを配列に格納しようとするとループしてしまいます。

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/55e96d3c2cee120e/71172c3dbae61d9a?hl=ja#71172c3dbae61d9a


{{comment multi|w}}

Remove duplicate fields in one line - horcsik (2006年05月13日 01時17分17秒)

インプットが

U112233=AAA=U112233=AAB=U123456=AAB=U123456=AAA=U123456=ABCD=

で、アウトプットが

U112233=AAA;AAB
U123456=AAB;AAA;ABCD

のようにすることはできますか?

http://groups.google.co.jp/group/comp.lang.awk/browse_thread/thread/73ce5e406fcfbe95/8aa3714b63fd7394?hl=ja#8aa3714b63fd7394


Re: - William James (2006年05月13日 01時18分01秒)

BEGIN { FS = "=" }
{ for (i=1; i<NF; i+=2)
    a[ $i ] = a[ $i ] ";" $(i+1)
}
END {
  for (key in a)
    print key "=" substr( a[key], 2 )
}

{{comment multi|w}}

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ]


最終更新時間:2007年07月30日 22時13分35秒