
私は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') を使用します。