sed は awk と組み合わせて行末の最後のスペースのみを削除します。

sed は awk と組み合わせて行末の最後のスペースのみを削除します。

私にはそのセリフがあります。

Siouxsie Sioux  Siouxsie Sioux  ...     
Sylvia Tobias   Sylvia Tobias   ...     
Sydney Urshan   Sydney Urshan   ... 
Club Drummer (uncredited)   Club Drummer (uncredited)   ...

awkを使用して別々のタブの最初の列を印刷し、

awk -F "\t" '{print $1","}'

問題はありませんが、末尾にスペースがあり、sedを使用します。

awk -F "\t" '{print $1","}'|sed -r 's/(^[^[:blank:]]+[[:blank:]]+[^[:blank:]]+)[[:blank:]]+/\1/'

これによりトリックが行われますが、2番目のスペースも削除されます。

Club Drummer (uncredited) ,

~になる

Club Drummer(uncredited),

私の考えでは

Club Drummer (uncredited),

それでは、最後のスペースのみを削除するにはどうすればよいですか?ありがとう

答え1

awk -F ' *\t' '{print $1 ","}'

または:

sed $'s/ *\t.*/,/'

答え2

awkそれ自体を使用して末尾のスペースを削除します。

awk -F'\t' '{sub(/[[:blank:]]+$/, "", $1);print $1","}' file

答え3

printf代わりに、printこの問題を解決できます。

$ awk '{for (i=1;i<NF;i++)printf("%s ", $i);printf("\b%s\n",",")}' file.txt 
Siouxsie Sioux Siouxsie Sioux,
Sylvia Tobias Sylvia Tobias,
Sydney Urshan Sydney Urshan,
Club Drummer (uncredited) Club Drummer (uncredited),

または必要であればsed

$ sed -re 's/ +\.\.+/,/g' file.txt 
Siouxsie Sioux  Siouxsie Sioux,     
Sylvia Tobias   Sylvia Tobias,     
Sydney Urshan   Sydney Urshan, 
Club Drummer (uncredited)   Club Drummer (uncredited),

答え4

私は、全体の操作を以下を使用してsed 's/^\([^\t]*\).*/\1,/'行うことができると思います。

関連情報