如何使用awk或sed为文本每行前四个字段添加引号?
这事儿简单,用awk或者sed都能快速实现,我给你两个方案,你看着选:
awk 解决方案
awk 默认按空格分割字段,咱们直接用格式化输出给前四个字段套上双引号,最后一个字段保持原样就行:
awk '{printf "\"%s\" \"%s\" \"%s\" \"%s\" %s\n", $1, $2, $3, $4, $5}' your_input.txt
解释
printf用来精确控制输出格式,这里指定了前四个字段用"字段内容"的形式输出,最后一个字段直接输出原始值$1到$5对应每一行的第1到第5个字段,完美匹配你的输入结构
sed 解决方案
用sed的正则替换功能,捕获行内的前四个非空格字段,给它们加上双引号:
sed 's/^\(\S\+\) \(\S\+\) \(\S\+\) \(\S\+\)/"\1" "\2" "\3" "\4"/' your_input.txt
解释
^\(\S\+\)匹配行开头的第一个非空格字段,用括号捕获为分组1,后面三个同理捕获分组2-4- 替换部分把这四个分组分别用双引号包裹,保留原本的空格分隔,最后一个字段不受影响
把命令里的 your_input.txt 换成你实际的文件名就可以运行啦,两种方法都能得到你要的输出效果。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

