2017-04-09 2 views
0

私は、次のコードを持っている:私はとawkにそれを与えた後、私はawkの内部でNRCのs番目の値を選択することができる方法:awk内の文字列からs番目の値を選択するにはどうすればよいですか?

!/bin/sh 
cat [email protected] > C.txt 
awk -v nrc="$*" 'NF>max {max=NF;s=NR} END {print (,max)}' C.txt 

これは私の質問があるSH

sh test.sh A.txt B.txt D.txt E.txt F.txt 

です価値?

(,max)の空白をnrcで埋めると、すべてのファイルが表示されます。grep、sed、catというuingを試してみましたが、awk内ではこれらの作業はありません。

最長の行を印刷した後、nrcからs番目の値を出力したいだけです。

A.txt B.txtなどのファイルの中には、スペースで区切られたランダムな単語しかありません。

+0

問題のNRCは何か? – radbrawler

+0

'split(nrc、a); a [s] 'を印刷します。 –

+0

A.txtから作られた文字列B.txt D.txt E.txt F.txt –

答えて

0

私は質問がそれほど明確ではなかったが、ここでsplitと例だと、あなたのスクリプトに追加してもらおう:

$ awk 'BEGIN{nrc="A.txt B.txt D.txt E.txt F.txt"; s=4; split(nrc,a); print a[s]}' 
E.txt 
+0

splitがデフォルトで考慮するデリミタは何ですか?私は彼に1つを与えることができますか? –

+0

ああ、それはsplitで動作します、nrfの代わりにnrcを書いただけです –

+0

デフォルトで区切り文字_fieldsep_は 'FS'で、' split'の3番目の引数です: 'split(nrc、a、" ")' 、 例えば。 –

関連する問題