2017-12-07 17 views
-4

ファイル内のフィールドをコロンで区切って並べ替え、その順序をstate:lastName:restOfName:cityに再配置するsedコマンドを作成すると助かります(住所が削除されます) 。sedでフィールドを並べ替えて削除する

Mickey Mouse, 1111 Disney Dr., Orlando FL 
Minnie Mouse, 1112 Disney Dr., Anaheim CA 
Adam Voter, 902 Biscayne Blvd., Miami FL 

彼らはそれらが行われたときに、このように見えることになっています。

FL:Mouse:Mickey:Orlando 
CA:Mouse:Minnie:Anaheim 
FL:Voter:Adam:Miami 

これは宿題で、私はsedしか使用できません。

+1

何を試しましたか、何がうまくいかなかったのですか? – karakfa

+1

これは無料のコード作成サービスではありません、少なくともあなた自身で何かを試してみる必要があります... http://idownvotedbecau.se/noattempt/ – Nic3500

+0

すぐに応答しないため申し訳ありません。私はこのようなものを使ってスペースや他のものを取り除こうとしています。-e/s /、/ g '-e' s//:/ g '-e' s /\.// g 'もの。 – Matt

答えて

0

あなたはそれについての補足説明が必要な場合は私に知らせて、以下のsedコマンドを使用することができます:あなたは、一言で言えば

enter image description here

sed -E -i.bak 's/^([^\s]*)\s+([^,]*),[^,]*,\s*([^\s]*)\s+([^\s]*)\s*$/\4:\2:\1:\3/g' test_add_file.in; 

上でテストをsedがあなたのテキストファイルを調べて必要なパターンを取得する正規表現を定義してから、backreferencesを使用して実際のパターンを再利用しますプロセス中に特定される。まもなく

http://www.rexegg.com/regex-quickstart.html

:このリンクで正規表現を見に関する正確な構文については

あなたのパターン

  • ([^\s]*)の開始を修正するためのラインの

    • ^始まりが使用されていますあなたのMickey, Minnie,...を得る(これはbacとして再利用されるので、括弧の間にある空白でないNに0の繰り返しK refとMickey and Mouse
    • ([^,]*)
    • \s+ 1以上のスペースが, 1112 Disney Dr.,
    • を使用していない2つのコンマの間の文字列(N非コンマチャー0の繰り返し)
    • ,[^,]*,\s*部のMouse一部にマッチしますOrlando and FL
    • の間Orlando, Anaheim
    • \s+ 1つの以上のスペースをフェッチするために使用さ
    • ([^\s]*)その後、あなたのsedコマンドの交換部品で、あなたはパターンを並べ替えると、あなたは\4:\2:\1:\3

      によって、それらの間の列を置くFL, CA, ...
    • \s*$を取得するために使用は、最終的に末尾のスペース

    EOL$とパターン端を修正します

  • +1

    ありがとうございました。 – Matt

    関連する問題