2つの文字列列を連結してそれらの間に_を挿入するにはどうすればよいですか?
ファイルがあります:
L o 45
OK kklkj 5
必要な結果は次のとおりです。
L_o 45
OK_kklkj 5
私は試した:
awk '{printf "%12s %22.2f\n", $1+'_'+$2, $3}' file
文字列を数値に変換します。ありがとうございます。
答え1
使用sed
:
sed 's/[[:blank:]]\{1,\}/_/' file
これは、1つ以上の連続したスペース(スペースまたはタブ)が最初に表示されることを単一のアンダースコア文字に置き換えます。
GNUを使用すると、sed
次のように短縮できます。
gsed -E 's/\s+/_/' file
これは、指定されたデータに対して上記と同じですが、最初の2つのフィールドの間に対応する文字がある場合は、より大きな空白文字セットと一致します(\s
PCRE表記は同様に一致し、[[:space:]]
垂直タブ文字、キャリッジリターン文字も含む)。キャリッジリターン文字とフォームフィード文字)。
質問のデータが与えられると、次のような出力が生成されます。
L_o 45
OK_kklkj 5
答え2
使用awk
$ awk '{$0=$1"_"$2FS$NF}1' input_file | column -t
L_o 45
OK_kklkj 5