numfmtの–groupingオプションによる、,(カンマ)付けって、便利ではあるけれど、
takk@deb9:~/tmp$ numfmt --grouping 1000 20000 300000 1,000 20,000 300,000 takk@deb9:~/tmp$
,(カンマ)を外す、–ungroupingオプションって無いですよね。
takk@deb9:~/tmp$ numfmt --ungrouping 1,000 20,000 300,000 numfmt: オプション '--ungrouping' を認識できません Try 'numfmt --help' for more information. takk@deb9:~/tmp$
,(カンマ)を外したいときは、どうすればよいでしょう。
いつものごとく、実験用テキスト作成。
takk@deb9:~/tmp$ seq 1000 100 2400 | pr -t5J | numfmt --grouping --field - | tee a.txt 1,000 1,300 1,600 1,900 2,200 1,100 1,400 1,700 2,000 2,300 1,200 1,500 1,800 2,100 2,400 takk@deb9:~/tmp$
numfmtには–ungroupingはないですが、,(カンマ)を取り除くこと自体は、別にnumfmtを使う必要もないです。
“,”を””に置換するだけですので、tr等で容易にできてしまいます
takk@deb9:~/tmp$ tr -d , < a.txt 1000 1300 1600 1900 2200 1100 1400 1700 2000 2300 1200 1500 1800 2100 2400 takk@deb9:~/tmp$
あるいは、sedでも良いですね。
takk@deb9:~/tmp$ sed 's/,//g' a.txt 1000 1300 1600 1900 2200 1100 1400 1700 2000 2300 1200 1500 1800 2100 2400 takk@deb9:~/tmp$
awkでも良いでしょう。要するに、普段使い慣れた置換ツール使えば良いんです。
takk@deb9:~/tmp$ awk '{gsub(",","");print}' a.txt 1000 1300 1600 1900 2200 1100 1400 1700 2000 2300 1200 1500 1800 2100 2400 takk@deb9:~/tmp$
いやいや、これでは全置換なので、numfmtの–fieldオプションのように列指定できないじゃないか。
そのまま、列を指定しましょう。2列目だけ,(カンマ)を外してみます。
takk@deb9:~/tmp$ awk '{gsub(",","",$2);print}' a.txt 1,000 1300 1,600 1,900 2,200 1,100 1400 1,700 2,000 2,300 1,200 1500 1,800 2,100 2,400 takk@deb9:~/tmp$
コメント