使用awk我需要在第一个“。”之间找到字符。和第一个空格“”(如果存在)并用空格“”替换它。 我有这个结构的文件(test.txt):
asdf.test.com 04-05-2014
qwer.test1.test.com 04-05-2014
asdfgg 04-05-2014
sadf
asdff.com 04-05-2014
我需要这个输出:
asdf 04-05-2014
qwer 04-05-2014
asdfgg 04-05-2014
sadf
asdff 04-05-2014
答案 0 :(得分:2)
使用sed,可以解决行尾空间的问题。
sed 's/\.[^. ]*//g' file
答案 1 :(得分:1)
awk NF=NF FS='\\..+ ' test.txt
结果
asdf 04-05-2014 qwer 04-05-2014 asdfgg 04-05-2014 sadf asdff 04-05-2014
答案 2 :(得分:0)
尝试sed:
cat test.txt | sed 's/\..*\ / /g'
答案 3 :(得分:-1)
这应该做:
awk '{sub(/\..*/,x,$1)}8' test.txt
asdf04-05-2014
qwer04-05-2014
asdfgg 04-05-2014
sadf
asdff04-05-2014
根据宝马的建议更新,因为行尾有空白。
或者这个:
awk -F"[. ]" '{print $1,(NF>1?$NF:x)}' test.txt
asdf 04-05-2014
qwer 04-05-2014
asdfgg 04-05-2014
sadf
asdff 04-05-2014