这是abc.txt文件由 5 列组成:
ID|first name|middle name|last name|address
1 | john | whatever | smith | somewhere
我如何获得这个输出:
ID|first name middle name last name|address
1 | john whatever smith |somewhere
如何'|'
仅将特定列上的空格替换为新文件定义.txt。在本例中,从第 2 列到第 4 列。
答案1
awk解决方案:
awk 'BEGIN{ FS=OFS="|" }{ cs=$2$3$4; gsub(/ +/, " ", cs); print $1,sprintf("%-32s",cs),$5 }' abc.txt
FS=OFS="|"
- 字段分隔符cs=$2$3$4
- 连接第二、第三和第四字段gsub(/ +/, " ", cs)
- 删除多余的空格sprintf("%32s",cs)
- 格式化的连接字符串
输出:
ID|first namemiddle namelast name |address
1 | john whatever smith | somewhere