xid.txt
我有一个名为:的文本文件
xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
我需要在 'SC48028' 、 'SC32173' 之前添加字符串 'PT_' ...等等。字符串“SC...”可以以任何组合开头,可以是“AC...”或“DL..”
所需输出:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
如果您看到上面的输出,我们不应该在以 'i' 、 'p' 、 'w' 和 'numeric' 开头的字符串之前插入 'PT_' 。我在 sed 中使用 insert/append 尝试了一些基本命令来满足我的要求。
答案1
和awk:
awk '$2~/^[A-Z][A-Z]/{ $2="PT_"$2 }1' xid.txt
输出:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
$2~/^[A-Z][A-Z]/
- 如果第二个字段以 2 个大写字母开头
或者sed方法:
sed -i 's/^\(xid:[[:space:]]*\)\([A-Z]\{2\}[^[:space:]]*\)/\1PT_\2/' xid.txt
答案2
sed选项
sed -i -e 's/[A-Z][A-Z]/PT_&/' file
在哪里
-i
就地编辑-e
执行命令