我有一个包含如下记录的文件
FIRST 1: SECOND 2: THREE 4: FIVE 255: SIX 255
我想删除空格和 : 之间的值
FIRST:SECOND:THREE:FIVE:SIX
带有代码
awk -F '[[:space:]]*,:*' '{$1=$1}1' OFS=, file
最佳答案
尝试过 gnu awk:
awk -F' [0-9]*(: *|$)' -vOFS=':' '{print $1,$2,$3,$4,$5}' file
尝试过 gnu sed:
sed -E 's/\s+[0-9]+(:|$)\s*/\1/g' file
awk的解释,
正则表达式 ,一个空格,后跟
[0-9]+
一个或多个数字,后跟文字 :
后跟一个或多个空格:*
,如果所有这些匹配,则收集除此匹配模式之外的所有其他内容,即。 FIRST、SECOND...等等,因为 -F
选项将其确定为字段分隔符 (FS),而 $1、$2 .. 等等始终不是 FS。但输出需要好看,即。有 FS,所以是 :
并且是 awk 变量定义 -vOFS=':'
关于shell - sed命令替换空格和:之间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55836130/