2
#!/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---
4

1 に答える 1