最初のフィールドから末尾のスペースのみを削除

最初のフィールドから末尾のスペースのみを削除

次のタブで区切られた複数行のファイルがあります。

99999bbbbt999999BBt99t99t99t99

(どこ第二=空白、t =タブ)

2番目のフィールドの末尾のスペースは大丈夫ですが、最初のフィールドの末尾のスペースは削除する必要があります。各行の最初のフィールドから末尾のスペースを削除する簡単な方法はありますか? sed/awk/tr?

ベストアンサー1

sed $'s/ *\t/\t/' < file

最初のタブの前のスペースは削除されます。これは、ksh93、bash、zsh、mksh、またはFreeBSD sh $'...'(Single UNIX仕様のIssue 8に含まれる予定)などのシェルサポートを想定しています。

いくつかのsed実装(例:GNU)は、以下をsed直接認識します\t

sed 's/ *\t/\t/' file

それ以外の場合は、POSIXlyで次のことができます。

TAB=$(printf '\t')
sed "s/ *$TAB/$TAB/" file

POSIXlyを使用して同じことを行うこともできますawk

awk '{sub(/ *\t/, "\t"); print}'

おすすめ記事