Linux sort コマンド: フィールドに埋め込まれた数値で並べ替えるにはどうすればよいでしょうか?

Linux sort コマンド: フィールドに埋め込まれた数値で並べ替えるにはどうすればよいでしょうか?

私はBASHを使用してRHEL 6を使用しています。

ファイル内のいくつかの行を、フィールドに埋め込まれた数字で並べ替えようとしています。ファイル名は word.txt です。

私が使用しているコマンドは次のとおりです:

sort -n -k4 word.txt

これは私が得た出力であり、番号順ではありません:

INSERT INTO area_names VALUES(124,'NewYork');
INSERT INTO area_names VALUES(125,'NewYork');
INSERT INTO area_names VALUES(12,'NewYork');

明らかに、「12」だけの行が最初にあるはずです。

「VALUES(」の後の数字は任意の長さにすることができます

「VALUES(」と「,」の間の数字でソートするようにsortに指示するにはどうすればよいですか?

データ内の「VALUES(」の後に空白を入れるという回避策に頼ることもできますが、それが最善の選択肢でない限り、そうすることは避けたいと思います。

答え1

これを試して:

 sort -t "(" -k2,2 -n word.txt

出力

area_names VALUES(12,'NewYork') に INSERT INTO します。
area_names VALUES(124,'NewYork') に INSERT します。
area_names VALUES(125,'NewYork') に INSERT INTO します。

-k POS1[,POS2]

     行の次の部分で構成されるソートフィールドを指定します。
     POS1とPOS2(POS2が省略されている場合は行末)、
     _包括的_。

     各POSは`F[.C][OPTS]'の形式を持ち、Fは
     使用するフィールド、Cは
     フィールドの先頭。フィールドと文字の位置は
     1から始まる番号。POS2では文字位置は0
     フィールドの最後の文字を示します。`.C'が省略されている場合は
     POS1、デフォルトは1(フィールドの先頭)です。省略した場合
     POS2から、デフォルトは0(フィールドの終わり)です。OPTSは
     順序付けオプションにより、個々のキーを
     異なるルールに変更できます。詳細は下記を参照してください。キーは複数の
     田畑。

     例: 2 番目のフィールドでソートするには、`--key=2,2' (`-k 2,2') を使用します。

関連情報