次のように、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
任意のデータと一緒に使用しないでください。そして変数を引用することを忘れないでください。