ファイルの2番目の列から0を削除する方法

ファイルの2番目の列から0を削除する方法

次の形式のファイルからユーザー名と携帯電話をインポートするスクリプトがあります。

**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689

携帯電話番号が「0」から始まる場合は、「0」だけを削除して、すべての携帯電話番号が次のように表示されるようにしたいと思います。

**Required format:**
username        mobile
zzz             3333012345
123             3212334343
245             371232368

(電話が0なしで始まる場合はそのままにしてください)

答え1

次のawkを使用して、2番目の列の先行ゼロのみを削除することができます。

    awk '{gsub("^0","",$2); print $1,$2}' yourfile.txt

答え2

次のコードスニペットを試してください。

sed 's/\ [0]//g' テスト.1

[前にスペースがあることに注意してください。

例えば

root@SHW:/tmp # cat test.1 
**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689
root@SHW:/tmp # sed 's/\ [0]//g' test.1 
**Current Format**
username        mobile
zzz            3333012345
123            3212334343
245             3712323689

私のubuntu-14.04で動作します

答え3

パールの使用:

< inputfile perl -pe 's/ 0([0-9]+)$/ $1/' > outputfile
  • -pwhile (<>) {[...]}スクリプトの周りにループを配置し、処理された行を印刷します。
  • -e:パラメータからスクリプトを読む

Perlコマンドの分析:

  • s: 置換を実行するためのアサーション
  • /:スタートモード
  • 0([0-9]+)$:行の末尾にゼロの数字が続き、その後に文字が続く1つ以上の数字を一致させてグループ化します
  • /:モード停止/ストラップ交換開始
  • $1:空白に置き換えられ、その後にキャプチャされたグループが続きます。
  • /:文字列の一時停止/修飾子の開始

答え4

以下をbash使用できます。

while read username mobile
do
    echo "${username} ${mobile/0/}"
done < inputfile

関連情報