リスト内の項目の順序を変更する

リスト内の項目の順序を変更する

プレーンテキストファイルがあります。ファイルには次のリストが含まれています。

@"Joe", @"211",
@"Bob Nelson", @"132",
@"Jack Sierra", @"3422",
@"Walt Robert", @"14",

リストには何千もの名前が含まれています...要素の順序を切り替えて、このリストを次に変換する必要があります。

@"211", @"Joe",
@"132", @"Bob Nelson",
@"3422", @"Jack Sierra",
@"14", @"Walt Robert",

端末でこれを行うにはどうすればよいですか?

ベストアンサー1

これはスペースを含む文字列に対して機能します。

sed 's/\(@"[^"]*"\), \(@"[^"]*"\)/\2, \1/' input.txt

仕組み:

sed - (s)tream( ed)itor は、入力の各行で (s)ubstosute コマンドを実行し
ます\(@"[^"]*"\), \(@"[^"]*"\)\2, \1

\22番目の一致(2番目の中括弧で)は、最初の一致(最初の中括弧で)を意味します
\1

中かっこはエスケープする必要があるので、\(とがあります\)。内部で@文字を検索し、文字を検索し、"いつでも繰り返される[^"]文字とは異なる文字を見つけて、"文字"を探します。

,その後、コンマの後にスペースがあり、そのような2番目のグループが来ると予想します\2

おすすめ記事