将第一列内容和前缀附加到行尾

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将第一列内容和前缀附加到行尾相关的知识,希望对你有一定的参考价值。

我正在尝试将列内容附加到每行的末尾。例如,我有:

0,John L Doe,Street,City 

1,Jane L Doe,Street,City

2,John L Doe,Street,City

3,John L Doe,Street,City

4,Jane L Doe,Street,City

5,John L Doe,Street,City

6,John L Doe,Street,City

7,Jane L Doe,Street,City

尝试将由逗号分隔的第一列附加到每行的末尾,包括字符“I”,使其成为:

0,John L Doe,Street,City I0

1,Jane L Doe,Street,City I1

2,John L Doe,Street,City I2

3,John L Doe,Street,City I3

4,Jane L Doe,Street,City I4

5,John L Doe,Street,City I5

6,John L Doe,Street,City I6

7,Jane L Doe,Street,City I7

添加“I”很容易添加:sed 's/$/I/'文件,但我遇到复制和附加第一列内容的问题

答案

尝试:

$ sed -E 's/([[:digit:]]+),.*$/& I1/' file
0,John L Doe,Street,City I0
1,Jane L Doe,Street,City I1
2,John L Doe,Street,City I2
3,John L Doe,Street,City I3
4,Jane L Doe,Street,City I4
5,John L Doe,Street,City I5
6,John L Doe,Street,City I6
7,Jane L Doe,Street,City I7

正则表达式([[:digit:]]+),.*$从该行的第一个数字到该行的末尾匹配。表达式([[:digit:]]+)匹配第一个逗号之前的所有数字并将它们保存在组1中。替换文本是& I1,其中sed用整个匹配替换&并用组1替换1

-E选项告诉sed使用扩展正则表达式(ERE)而不是默认的基本正则表达式(BRE)。

实际上,不需要在一行末尾匹配的$。因为sed正则表达式始终是最左边最长的匹配,所以我们的正则表达式总是匹配到行的末尾。所以,我们可以使用稍微简单一些:

sed -E 's/([[:digit:]]+),.*/& I1/' file

Compatibility

以上应适用于所有现代sed。对于较旧的GNU sed,用-E替换-r

sed -r 's/([[:digit:]]+),.*/& I1/' file
另一答案
Try this:

$ cat file.sh 
0,John L Doe,Street,City
1,Jane L Doe,Street,City
2,John L Doe,Street,City

$ cat example.sh 
while IFS=, read -r ID name street city; do
    printf '%s,%s,%s,%s, %s
' "${ID}" "${name}" "${street}" "${city}" "I${ID}"
done < "$filelocation"

$ sh example.sh 
0,John L Doe,Street,City, I0
1,Jane L Doe,Street,City, I1
2,John L Doe,Street,City, I2



Another solution is:

$ cat file.sh 
0,John L Doe,Street,City
1,Jane L Doe,Street,City
2,John L Doe,Street,City

$ cat example.sh 
IFS='
'
for line in $(cat file.sh)
do
    echo ${line/%/ I${line%,*,*,*}}
done

$ sh example.sh 
0,John L Doe,Street,City I0
1,Jane L Doe,Street,City I1
2,John L Doe,Street,City I2

以上是关于将第一列内容和前缀附加到行尾的主要内容,如果未能解决你的问题,请参考以下文章

UITextview 光标移动到行尾

VFP正则表达式应用:替换指定内容到行尾

Eclipse快捷方式到行尾和行尾

将光标定位到行尾

如何将列表项附加到数据框中的特定列?

vim 中将光标从行头移到行尾的快捷键是啥