如何使用 awk 或 sed 打印仅到第一个下划线字符的字符串?
前:
host100_044 2
host101_045 2
host102_046 2
后:
host100
host101
host102
答案1
可以通过以下方式完成cut
:
cut -d _ -f 1
例如
$ echo host100_044 2 | cut -d _ -f 1
host100
也awk
可以用awk -F_ '{print $1}'
(可能有更干净的方法来做到这一点)
答案2
sed 的另一种选择:
echo 'host100_044 2' | sed 's/^\(.*\)_.*$/\1/'
如果文件中有这些内容,您可以按如下方式调用它;
cat fileName | sed 's/^\(.*\)_.*$/\1/'
答案3
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
答案4
$ echo "host100_044 2" | awk -F'_' '{print $1}'
host100
指示使用下划线作为字段分隔符。脚本-F'_'
本身只打印第一个字段。awk
awk