如何提取文件每行匹配aaaa、test后的后续词并以逗号分隔输出
解决方案:使用awk提取指定字段并格式化输出
针对你的需求,用awk命令可以便捷实现字段提取和格式调整,以下是具体命令:
awk '{ val1 = val2 = "" for(i=1; i<=NF; i++){ # 不区分大小写匹配"aaaa",提取后续第一个单词并将首字母大写 if(tolower($i) == "aaaa"){ val1 = $(i+1) sub(/^./, toupper(substr(val1,1,1)), val1) } # 匹配"test",提取后续第一个单词 if(tolower($i) == "test"){ val2 = $(i+1) } } # 按格式输出,可按需调整逗号前后的空格 printf "%s,%s\n", val1, val2 }' 你的文件名.txt
命令说明:
- 遍历每行所有字段(
NF代表当前行的字段总数),定位"aaaa"和"test"的位置 - 用
tolower()实现不区分大小写匹配,适配输入中"Aaaa"的写法 - 通过
sub()将"aaaa"后的单词首字母转为大写,匹配预期输出格式 - 最后用
printf格式化输出两个提取到的单词,用逗号分隔
格式调整说明:
如果需要和你预期输出中的空格格式完全一致,可将printf行改为对应格式,比如:
printf "%s ,%s\n", val1, val2
核心提取逻辑不变,仅调整输出的空格样式即可。
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

