我在文件file.txt中有一个文本,就像这样
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
a b c // delimited by tab
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
我知道使用sed
我可以在文件中找到并替换文本。如果一行以b开头(由制表符分隔),我需要用d e f替换它。所以上面的文件将是
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
d e f // delimited by tab
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxx
我可以这样做来查找和替换,我只想要那些以b开头的行并替换整行。
sed -i 's/a/\t/\b/\t\/c/REPLACED TEXT/g' file.TXT
答案 0 :(得分:14)
使用^
符号表示一行的开头:
sed -i 's/^a\tb.*$/REPLACED TEXT/g' file.TXT
Exmplanation:
^
表示行/输入的开头 \t
表示标签符号 .
表示任何字符 *
表示前面的表达式中的零个或多个 $
表示行/输入 答案 1 :(得分:1)
如果以a<tab>b<tab>c
开头,则以下内容将替换整行。 .*$
使匹配包括整行替换。您的示例正则表达式包含c
,但散文仅提及a
和b
,因此不清楚是否需要c
。如果没有,请从正则表达式中删除\tc
。
s/^a\tb\tc.*$/REPLACED TEXT/g
答案 2 :(得分:1)
使用awk
awk '/^a\tb/{$0="REPLACED TEXT"} 1' foo.txt
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -i '/^a\tb/c\replacement text' file