この記事を読んでくれてありがとう。私はbashに初めて触れたので、次のアドバイスが必要です。
2つの列を含むファイルを読み取るbashスクリプトを作成したいと思います。
f 2
g 1
s 4
d 5
f 2
g 5
d 9
g 10
h 1
s 5
d 29
私のスクリプトは実際に最初の列(アルファベット)に基づいてファイルをソートし、という名前のファイルを生成し、数字で同じことを行い、alpha_sorted.txt
名前を付けたいと思いますnumbers_sorted.txt
。
私はこの分野に慣れていないので、可能であればあなたの助けを求めたいと思い、文書やリンクを提供したり、コードの助けを得たいと思います。
このスクリプトは初級レベルの使用のためであるため、アプローチを複雑にすることはお勧めできません。
修正する
john1024の答えを使用して、次の問題が発生しました。
Hasan@HasanChr /cygdrive/c/users/Hasan/Desktop/Bash
$ chmod +x script.sh
Hasan@HasanChr /cygdrive/c/users/Hasan/Desktop/Bash
$ ./script.sh
cat: alpha_sorted.txt: No such file or directory
スクリーンショットscript.sh
ベストアンサー1
この記事がに投稿されて以来Unix.stackexchange.com、一般的なUNIXツールにアクセスできるとします。
最初の列はアルファベット順に並べられます。
$ sort file.txt >alpha_sorted.txt
$ cat alpha_sorted.txt
d 29
d 5
d 9
f 2
f 2
g 1
g 10
g 5
h 1
s 4
s 5
数値ソート:
$ sort -nk2,2 file.txt >numbers_sorted.txt
$ cat numbers_sorted.txt
g 1
h 1
f 2
f 2
s 4
d 5
g 5
s 5
d 9
g 10
d 29
-n
数値ソートを指定します。 -k2,2
ソートする2番目の列を指定します。
詳細についてはを参照してくださいman sort
。
メモ帳を使用してUnixスクリプトを編集するときに発生する問題
DOS行の終わりにスクリプトを作成しました。
$ cat dos.sh
sort file.txt >alpha_sorted.txt
cat alpha_sorted.txt
見えませんが、コマンドの最後にスペースを追加しましたcat
。このファイルを使用すると、表示されるエラーを再現できます。
$ chmod +x dos.sh
$ dos.sh
cat: alpha_sorted.txt: No such file or directory
: No such file or directory
dos2unix
またはなどのユーティリティを使用してこの問題を解決できますtr
。使用tr
:
$ tr -d '\r' <dos.sh >fixed.sh
$ chmod +x fixed.sh
これで、次のコマンドを正常に実行できます。
$ fixed.sh
d 29
d 5
d 9
f 2
f 2
g 1
g 10
g 5
h 1
s 4
s 5