回答:
sedの別の代替:
echo 'host100_044 2' | sed 's/^\(.*\)_.*$/\1/'
これらがファイルにある場合は、次のように呼び出すことができます。
cat fileName | sed 's/^\(.*\)_.*$/\1/'
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} {printf("host%s ", $1)}' | cut -d ' ' -f2-
出力:
host100 host101 host102
改行付き:
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} $1 ~ /[0-9]/ {print "host"$1}'
出力:
host100
host101
host102
使用sed
:
echo host100_044 2 | sed 's;_.*;;'
sed
インプレイス編集オプション
を使用して、
sed -i.old 's;_.*;;' infile
awk
ソリューションはすでに投稿されていますが(cut
おそらくこの場合はおそらく最高です)、同じことを書いていただけsed
ですが、あなたは数秒で私を倒しました:-)。デフォルトで行末に$
一致.*
するため、を削除することもできます。
$ echo "host100_044 2" | awk -F'_' '{print $1}'
host100
-F'_'
指示awk
フィールドの区切り文字としてアンダースコアを使用します。awk
スクリプト自体は、単に最初のフィールドを出力します。
これは前に出力を印刷します_
:
sed 's/_.*//' -filename