2つの文字区切り記号を使用して切り取り

2つの文字区切り記号を使用して切り取り

次のように、cut toと2つの文字区切り文字を使用して多くの行を持つファイルを処理したいと思います。

1F3C6..1F3CA
1F3CF..1F3D3
1F3E0..1F3F0

ただし、cutは単一文字のみを受け入れます。

代わりにcut -d'..'試してみますが、awk -F'..' "{echo $1}"うまくいきません。

私のスクリプト:

wget -O output.txt http://www.unicode.org/Public/emoji/6.0/emoji-data.txt                                                                             
sed -i '/^#/ d' output.txt                        # Remove comments                                                                                   
cat output.txt | cut -d' ' -f1 | while read line ;                                                                                                    
  do echo $line | awk -F'..' "{echo $1}"                                                                                                             
done  

ベストアンサー1

awkフィールド区切り文字が2文字を超えるたびに正規表現として扱われます。..正規表現で任意の 2 文字を表します。エスケープするには、or withを.使用する必要があります。[.]\.

awk -F'[.][.]' ...
awk -F'\\.\\.' ...

(パラメータを取得または拡張するには、バックスラッシュ自体もエスケープする必要があります(少なくともgawkなどの一部のawkの場合)\n\b-F

あなたの場合:

awk -F' +|[.][.]' '/^[^#]/{print $1}' < output.txt

いずれにせよ、テキストを処理するシェルループの防止、気づくreadこのように使用しないでください、それecho任意のデータと一緒に使用しないでください。そして変数を引用することを忘れないでください

おすすめ記事