sedで行けます。オプションとしてはsed -e "s/['&;(,]//g"
のように指定します。
macOS Sierra 10.12.6 のターミナルでの実行結果を示します。
Bash
1bash-3.2$ cat data.txt
2'TIS
3'TIS
4'TWERE
5'TWERE
6&
7&
8&
9(A
10(AND
11(AND
12AGAIN,
13
14bash-3.2$ sed -e "s/['&;(,]//g" data.txt
15TIS
16TIS
17TWERE
18TWERE
19AMP
20AMP
21AMP
22A
23AND
24AND
25AGAIN
26bash-3.2$
27
追記 - perl5 での代替策の提案
macOS のターミナルではperl
(perl5)も使えるので、こちらの方が簡単かもしれません。sedの代わりとしてawk
も選択肢のひとつですが、perlの方が正規表現を含めて強力です。
以下は、\W (単語構成文字(「a~z」「A~Z」「0~9」 アンダーバー「_」))以外を除去するperl5でのワンライナーでのmacOSターミナルでの実行結果です。
Bash
1$ perl -ne 's/\W//g;print $_ . "\n"' data.txt
2TIS
3TIS
4TWERE
5TWERE
6AMP
7AMP
8AMP
9A
10AND
11AND
12AGAIN
13
14$
コマンド部分 's/\W//g;print $_ . "\n"'
で、「1行ごとに」「単語構成文字以外を」「全部」「除去して」「プリントし」「最後に改行文字をプリント」します。
コメントにて追加でいただいた質問と確認事項ですが、
自分がやった/Wでうまくいかない理由
macOSのターミナルで使えるsed は、GNU版のsedではなく、BSD版(BSDオリジナルかは分かりませんが)のもので、メタ文字の\W
や\w
が使えない為です。GNU版のsedであれば、質問者様のやろうとしていた\W
が使えます。以下はCygwin上でGNU版のsed(4.4)にて実行した結果です。
$ sed --version
sed (GNU sed) 4.4
Packaged by Cygwin (4.4-1)
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-sed@gnu.org>.
$ sed -e 's/\W//g' data.txt
TIS
TIS
TWERE
TWERE
AMP
AMP
AMP
A
AND
AND
AGAIN
上記を踏まえて、
ほかにも - や ) や :などがあるのですがその場合も全部書き出してやるのがよいのでしょうか?
macOSのターミナルでBSD版sedを実行するのであれば、全部書き出す必要があります。文字によっては必要に応じてエスケープしなければならないので煩雑かと。以下は、私の最初の回答例に")" と"""(ダブルクォーテーション)を加えた例です。
Bash
1bash-3.2$ cat data2.txt
2'TIS
3'TIS
4"TIS"
5("TIS")
6((""TIS""))
7'TWERE
8'TWERE
9&
10&
11&
12(A
13(AND
14(AND
15AGAIN,
16
17bash-3.2$ sed -e "s/['&;(,)\"]//g" data2.txt
18TIS
19TIS
20TIS
21TIS
22TIS
23TWERE
24TWERE
25AMP
26AMP
27AMP
28A
29AND
30AND
31AGAIN
32bash-3.2$
33
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/12 00:55
2017/11/12 02:53