一応こんな感じでできましたが、もっとよい方法があれば教えていただけるとありがたいです。
POSIXコマンドであればawk以外でもokです。
sh
1echo 'aa bb cc 0.98' | 2awk -v OFS='\t' '{ 3 l = length($0); 4 for(i=l; i>0; i--){ 5 if(substr($0, i, 1)==" ") { 6 break 7 } 8 }; 9 print substr($0,1,i-1), substr($0,i+1,l) 10}'
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
こんにちは。
POSIXコマンドであればawk以外でもokです。
とのことですので、 sed
を使ってみました。
[jun68ykt@imac ~]$ TAB=`printf '\t'`; echo 'aa bb cc 0.98' | sed -E "s/^(.+) ([^ ]+)$/\1${TAB}\2/" aa bb cc 0.98 [jun68ykt@imac ~]$
環境は Mac OS 10.13.4 High Sieraです。
投稿2018/06/04 20:54
編集2018/06/04 21:07総合スコア9058
0
ベストアンサー
これでどうでしょう。
echo 'aa bb cc 0.98' | awk '{$(NF-1)=$(NF-1) "\t" $NF; $NF=""; print}'
修正: $NFが存在してはいるため末尾に入ってしまうスペースを除去。かなりやっつけ感が出てきてしまいましたが…。
echo 'aa bb cc 0.98' | awk '{$(NF-1)=$(NF-1) "\t" $NF; $NF=""; sub(" $","", $0); print}'
投稿2018/06/04 18:43
編集2018/06/04 19:18総合スコア13692
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/04 18:54
2018/06/04 18:55
2018/06/04 19:00
2018/06/04 19:21
2018/06/04 21:16
0
ネタ的な回答ということでひとつ…
echo 'aa bb cc 0.98' | \ sed 's/ /#/;s/ /#/' | \ tr ' ' '\t' | \ sed 's/#/ /g'
--- 追記 ---
最後の空白という条件が必須ならこんな感じでいけるかなあ
申し訳ありませんが動作確認はしてませんので…
x='aa bb cc 0.98' set -- $x n=`expr $# - 1` a=`echo $x | cut -f 1-$n` echo -e $a"\t"${$#}
投稿2018/06/05 00:47
編集2018/06/08 01:46総合スコア7464
0
変数に入っているとすると、
Bash
1A='aa bb cc 0.98' 2echo ${A% *}$'\t'${A##* }
標準入力なら、上記を使って
Bash
1echo 'aa bb cc 0.98' | 2while read A;do echo ${A% *}$'\t'${A##* };done 3```とするか、 4```Bash 5echo 'aa bb cc 0.98' | 6sed 's/(.*) (.*)/\1'$'\t''\2/'
投稿2018/06/04 21:25
総合スコア85901
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/04 21:21
2018/06/04 21:23