#!/bin/sed -f
s/","/|/g; # global change of "," to bar
# do some more stuff
#s/|/","/g; # global change of bar back to ","
#---end of script---
上記のスクリプトは、CSV から 2 番目のフィールドを削除し、引用符などを消去します。質問とは関係がないため、ほとんどのスクリプトは含めませんでした。
スクリプトはファイルに保存されますfix.sh
。
次のようなファイルで実行できます。
$ ./fix.sh <myfile.txt >outputfile.txt
そして、それはうまく機能します。
しかし、私はそれをファイルに置き換えたいです。これは機能しません:
$ ./fix.sh <myfile.txt >myfile.txt
その結果、空のmyfile.txt
.
これも機能しません:
$ ./fix.sh myfile.txt
bash スクリプトに関するドキュメントをいくつか見つけようとsed
しましたが、役立つものは見つかりませんでした。
答えは簡単だと思います。見つけられないだけです。ご協力いただきありがとうございます。
編集:これはCentOS 6マシンで実行されていることに言及する必要がありました。
完全なスクリプトは以下にあります。その全体的な結果は、フィールド #2 を削除し、引用符を削除することです。
#!/bin/sed -nf
# adapted from http://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq4_005.html
s/","/|/g; # global change of "," to bar
s/^"//;
s/"$//;
s/^\([^|]*\)|[^|]*|/\1|/; # delete 2nd field contents
s/||/|/; # change || to |
s/ //g; # remove spaces
s/|/,/g;
#s/|/","/g; # global change of bar back to ","
#---end of script---