使用shell脚本编辑文本文件中的列
我有一个文本文件:使用shell脚本编辑文本文件中的列,shell,sed,awk,Shell,Sed,Awk,我有一个文本文件: a b n d f h e f y 我想编辑它,使它像: a b@gmail.com n d f@gmail.com h e f@gmail.com y 我该怎么做?有什么命令可以帮助您吗?试试这个awk单行程序: $ awk '$2=$2"@gmail.com"' file a b@gmail.com n d f@gmail.com h e f@gmail.com y 使用内联sed sed -i.bak 's/\(^[^ ]* *\)\([^ ]*\)\(.*\
a b n
d f h
e f y
我想编辑它,使它像:
a b@gmail.com n
d f@gmail.com h
e f@gmail.com y
我该怎么做?有什么命令可以帮助您吗?试试这个awk单行程序:
$ awk '$2=$2"@gmail.com"' file
a b@gmail.com n
d f@gmail.com h
e f@gmail.com y
使用内联sed
sed -i.bak 's/\(^[^ ]* *\)\([^ ]*\)\(.*\)$/\1\2@gmail.com\3/' file
这将保存对原始文件本身的更改。这可能适用于您(GNU-sed):
请解释正则表达式[^]*
表示匹配空格以外的任何内容,*
表示任何长度为0或更长的文本。sed-r的/^\s+\s+/&@gmail.com/”文件
更具可读性和健壮性(GNU-sed)。这不会对原始文件进行更改。它创建一个新文件,然后将其命名为与原始文件相同的名称。如果原始文件有其他链接,这是一个显著的区别。它在sed
+1的所有实现中都是无效的。有趣的是,有些人会看看这有多简单,sed替代方案有多复杂,然后选择sed命令,因为某些版本的sed支持-i
。唉。。。。无论如何-较新版本的gawk
支持-i inedit
更改原始文件(如果需要)。
sed -i 's/\S\+/&@gmail.com/2' file