Shell 在行的特定位置插入字符串
我想在文件行的特定位置插入一个字符串 例如,我的文件包含内容 文件1:Shell 在行的特定位置插入字符串,shell,unix,Shell,Unix,我想在文件行的特定位置插入一个字符串 例如,我的文件包含内容 文件1: abcd efg hi xxx yy zzccc xx 7777 abcd efg hi xxx yy na zzccc xx 7777 na 现在,在第一个字符是x的每一行中,我想在第11个位置写上“na” 文件的输出应为: 文件1: abcd efg hi xxx yy zzccc xx 7777 abcd efg hi xxx yy na zzccc xx 7777
abcd efg hi
xxx yy
zzccc
xx 7777
abcd efg hi
xxx yy na
zzccc
xx 7777 na
现在,在第一个字符是x的每一行中,我想在第11个位置写上“na”
文件的输出应为:
文件1:
abcd efg hi
xxx yy
zzccc
xx 7777
abcd efg hi
xxx yy na
zzccc
xx 7777 na
有人能帮忙吗?谢谢大家! 这样做:perl-e'while(){if(/^x/){chomp;print$\..na\n”}else{print;}文件1
将(/^x/)替换为所需内容,将“na”替换为所需字符串 在您的示例中,假设包含
x
的行小于等于10个字符的Bourne/Posix shell解决方案是:
$ while IFS= read -r line; do [ $(expr index "$line" x) -eq 1 ] && printf "%-10sna\n" "$line" || printf "%s\n" "$line"; done <file.txt
abcd efg hi
xxx yy na
zzccc
xx 7777 na
#!/bin/sh
while IFS= read -r line; do
if [ $(expr index "$line" x) -eq 1 ]; then
printf "%-10sna\n" "$line"
else
printf "%s\n" "$line"
fi
done <file.txt
$while IFS=read-r行;do[$(expr index“$line”x)-eq 1]&printf“%-10sna\n”“$line”| printf“%s\n”“$line”;已完成sed的/\(^[x].\)/\1 na/g'1.t
到目前为止您有什么?发布后问题文件被修改。第一个“xxx”是第二行的开始,下一个“xx”是第四行的开始。您使用的编程语言是什么?很抱歉,添加第11个pos条件更新了sed's/\(^[x].*\/\1/g'file.t|sed's/\(^[x].{0,9\}.*/\1na/g'
,我认为这将从更多的解释中受益。