次のタブで区切られた複数行のファイルがあります。
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}'