2016-10-14 37 views
2

Unixではファイル(以下)のショートリストのすべての名前を反転して姓の後に昏睡を配置する一連の切り取り/貼り付けコマンド(各コマンドの結果をファイルに保存する)を書き込もうとしています。法案ジョンソンはジョンソン法案になる)。私が最終候補リストからカットすることができますが、同じコマンドラインでの私のFileNewファイルにそれを貼り付ける方法がわからないですcutコマンドとpasteコマンドを1行のコマンドとして使用する方法は?

2233:charles harris :g.m.  :sales  :12/12/52: 90000 
9876:bill johnson :director :production:03/12/50:130000 
5678:robert dylan :d.g.m. :marketing :04/19/43: 85000 
2365:john woodcock :director :personnel :05/11/47:120000 
5423:barry wood  :chairman :admin  :08/30/56:160000 

は、ここに私のファイルの最終候補リストです。ここでは、カットのために私のコードです:

cut -d: -f2 shortlist 

結果:今

charles harris 
bill johnson 
robert dylan 
john woodcock 
barry wood 

は私が猫のFileNew、結果は以下のようになりますと、これは私のFileNewファイルに貼り付けることにしたいと

harris, charles 
johnson, bill 
dylan, robert 
woodcock, john 
wood, barry 

私にこれを案内してください。ありがとうございました。

+3

ショートリストファイルに 'jane xのようなエントリが含まれていますか?スミス、ドリエリザベスジョーンズ、またはスペースで区切られた2つの単語を超える名前の他の形式? –

答えて

2

あなたは、単一のawkでそれを行うことができます:

awk -F: '{split($2,a,//); if(a[2]) l=a[2] ", "; print l a[1]}' shortlist 

2番目の名前がない場合は、コンマを印刷したくないとします(名前に2つ以上の単語が含まれていないとします)。

+0

私は唯一のカット/ペースト珍しいを使用するあなたの要件を見つける。しかし、 '--output-delimiter'を提供するGNUカットでは、2回のカットで行うことができます。しかし、後にカンマ/スペースがあります。 'cut -d:-f2 --output-delimiter ="、 "ショートリスト| cut -d "--output-delimiter ="、 "-f2,1' –

+0

GNU' cut'(POSIX ['cut'](http://pubs.opengroup.org/onlinepubs/9699919799)に従ってください。 /utilities/cut.html)要件)は、フィールドの繰返しも並べ替えもしません。あなたは与えられたフィールドを複数回要求することができ、それは一度表示されます。 '-f 2,1'でフィールドを並べ替えることができますが、フィールドは' field1 field2'の順に出力されます。私が自分の答えをチェックしていたとき、これは私を驚かせた。 (私は 'cut'の古い実装を持っていますが、' -f 2,1,2,1'を指定すると 'harris charles harris charles'を出力します)。 –

1

あなたは、文字列を分割するcutを使用したら、あなたが望む結果を生成するpasteよりもawkを使用する方が簡単かもしれ:

$ cut -d":" -f2 shortlist | awk '{printf "%s, %s\n", $2, $1}' 
+0

私のコマンドは切り取りと貼り付けだけを使用する必要があります。私はカットとawkを使用することはできません。私はawkを使用して結果を得ることができましたが、私はそれをペーストを使用して取得する必要があります – Venkata

関連する問題