我有以下文本文件:
STRONGTUND TR12 REM Mary
STRONGTUND TR12 LAC 78
STRONGTUND TR12 BER -2
STRONGTUND TR13 REM John
STRONGTUND TR13 LAC 100
STRONGTUND TR13 BER -67
STRONGTUND TR14 REM Greg
STRONGTUND TR14 LAC 23
STRONGTUND TR14 BER -6
我想要实现的目标如下:寻找与STRONGTUND TR\d LAC \d
正则表达式匹配的字符串。匹配后,在新行上添加另一个字符串,例如:STRONGTUND $SAME-TR-NUMBER-AS-MATCHED-STRING LACv8 $INPUT
,其中" $ INPUT"是变量(可以是文本或不是文本)并被赋予脚本以放入它创建的每一行。请注意,$ INPUT对于每一行都是不同的。
在上面的文本示例中,结果应该是:
STRONGTUND TR12 REM Mary
STRONGTUND TR12 LAC 78
STRONGTUND TR12 LACv8 212
STRONGTUND TR12 BER -2
STRONGTUND TR13 REM John
STRONGTUND TR13 LAC 100
STRONGTUND TR13 LACv8 234
STRONGTUND TR13 BER -67
STRONGTUND TR14 REM Greg
STRONGTUND TR14 LAC 23
STRONGTUND TR14 LACv8 111
STRONGTUND TR14 BER -6
这是否可以在不使用编程语言的情况下实现(所以只能使用linux工具?)
答案 0 :(得分:0)
是的,有可能。例如,像这样:
awk -v "out=FILE_OUT" '1 { print; print $0 > out }
$0 ~ "STRONGTUND TR[0-9]+ LAC [0-9]+" {
printf "Enter value: "
getline val < "-"
print $1,$2,"LACv8",val > out
}' FILE_IN
它将解析文件FILE_IN,询问用户在LACv8之后输入的值并将新内容保存到FILE_OUT。