使用SED将字符添加到行尾

时间:2016-10-07 01:50:42

标签: sed

我正在尝试在此文本文件的每一行末尾添加感叹号。我被告知我需要将所有字符从小写切换到大写,并使用下面的字符串完成。我不确定如何在同一sed语句中加入感叹号。

cat "trump.txt" | sed 's/./\U&/g'

2 个答案:

答案 0 :(得分:0)

考虑以下示例文本:

$ cat ip.txt 
this is a sample text
Another line
3 apples

使用sed命令,使用g标志一次大写一个字符

$ sed 's/./\U&/g' ip.txt 
THIS IS A SAMPLE TEXT
ANOTHER LINE
3 APPLES

在结尾添加一些其他字符

$ sed 's/.*/\U&!!!/' ip.txt 
THIS IS A SAMPLE TEXT!!!
ANOTHER LINE!!!
3 APPLES!!!
  • .*将匹配整行,&将包含整行,同时替换
  • g标志不需要,因为替换只发生一次

答案 1 :(得分:0)

这是awk版本,其中所有文本都将转换为大写,然后将添加三个惊叹号。

 awk '{$0=toupper($0) "!!!"}1' input
 THIS IS A SAMPLE TEXT!!!
 ANOTHER LINE!!!
 3 APPLES!!!

说明: $0是整行或记录。 toupper是一个awk内置函数,用于将输入转换为大写。这里提供$0作为toupper函数的输入。因此,它会将$0转换为大写。最终大写的$0!!!将被替换为$ 0作为新值。

命令细分:

awk '{$0=toupper($0)}1' input # to make text uppercase.  
awk '{$0= $0 "!!!"}1' input   # to add "`!!!`" in the end of text.

bash方式:变量名后的^^符号将使变量大写的内容。

while read line;
   do
   echo "${line^^}"'!!!' ;
done <input