String bash:如果输入字符串有2行,则追加新行/字符串/文本

String bash:如果输入字符串有2行,则追加新行/字符串/文本,string,bash,sed,pipe,chain,String,Bash,Sed,Pipe,Chain,我得到了以下输出,想测试它的行计数(例如wc-l)是否等于2。如果是这样,我想附加一些东西。只能使用链条管 开始输入: echo "This is a new line Test" 目标产出: "This is a new line Test some chars" 但仅当开始输入行计数等于2时 我已经试过这样的方法: echo "This is a new line Test" | while read line ; do lines=$(echo "$lines\n$line") ;

我得到了以下输出,想测试它的行计数(例如wc-l)是否等于2。如果是这样,我想附加一些东西。只能使用链条管

开始输入:

echo "This is a
new line Test"
目标产出:

"This is a
 new line Test
 some chars"
但仅当开始输入行计数等于2时

我已经试过这样的方法:

echo "This is a
new line Test" | while read line ; do lines=$(echo "$lines\n$line") ; echo $all ... ; done
但这些想法都没有找到解决办法。 使用sed/awk等是可以的,只是它应该是链式管道


谢谢

使用awk更简单:

[[ $(wc -l < file) -eq 2 ]] && awk 'NR==2{$0=$0 RS "some chars"} 1' file
This is a
 new line Test
some chars
[[$(wc-l
使用awk更简单:

[[ $(wc -l < file) -eq 2 ]] && awk 'NR==2{$0=$0 RS "some chars"} 1' file
This is a
 new line Test
some chars
[[$(wc-l
使用awk更简单:

[[ $(wc -l < file) -eq 2 ]] && awk 'NR==2{$0=$0 RS "some chars"} 1' file
This is a
 new line Test
some chars
[[$(wc-l
使用awk更简单:

[[ $(wc -l < file) -eq 2 ]] && awk 'NR==2{$0=$0 RS "some chars"} 1' file
This is a
 new line Test
some chars
[[$(wc-l
awk'1;END{if(NR
awk'1;END{if(NR
awk'1;END{if(NR
awk'1);END{if(NR这将仅在输入行计数为2时产生(增强)输出:

 echo "This is a
 new line Test" | 
  awk \
  'NR>2 {exit} {l=l $0 "\n"}  END {if (NR==2) printf "%s%s\n", l, "some chars"}'
这将仅在输入行计数为2时产生(增强)输出:

 echo "This is a
 new line Test" | 
  awk \
  'NR>2 {exit} {l=l $0 "\n"}  END {if (NR==2) printf "%s%s\n", l, "some chars"}'
这将仅在输入行计数为2时产生(增强)输出:

 echo "This is a
 new line Test" | 
  awk \
  'NR>2 {exit} {l=l $0 "\n"}  END {if (NR==2) printf "%s%s\n", l, "some chars"}'
这将仅在输入行计数为2时产生(增强)输出:

 echo "This is a
 new line Test" | 
  awk \
  'NR>2 {exit} {l=l $0 "\n"}  END {if (NR==2) printf "%s%s\n", l, "some chars"}'


“仅使用链式管道”或“成为链式管道”是什么意思?限制的原因是什么?需要是一个衬里。“仅使用链式管道”或“成为链式管道”是什么意思?限制的原因是什么?需要是一个衬里。“仅使用链式管道”或“成为链式管道”是什么意思?限制的原因是什么?需要是一行。什么是“仅使用链管”或“是链管”?限制的原因是什么?需要是一行。但这也将插入“如果输入中有两行以上的字符…”(但是谢谢!比我的尝试更好…一般来说是的,但我不能这样做:echo“…”[$(wc-lIFS=;
这个问题。为了与这个问题保持一致,
mapfile没有“-t“在数组中保留换行符,所以我想用空字符串显式地连接这些行。标题是<2,问题是==2,所以我假设……说得清楚,
wc-l;cat
无疑会更快,在记忆上肯定会更容易。re
IFS=;
:感谢您的解释;因为问题的主体提到了“等于”两次,我自由地对标题进行了相应的编辑。就这样!谢谢!:)我很好奇为什么
IFS=;
会出现。为了与问题一致,
mapfile没有“-t”在数组中保留换行符,所以我想用空字符串显式地连接这些行。标题是<2,问题是==2,所以我假设…说得很清楚,
wc-l;cat
无疑会更快,在记忆上肯定会更容易。re
IFS=;
:感谢您的解释;因为问题的主体提到了“equals”两次,我自由地对标题进行了相应的编辑。就这样!谢谢!:)我很好奇为什么
IFS=;
会出现。为了与问题一致,
mapfile没有“-t”在数组中保留换行符,所以我想用空字符串显式地连接这些行。标题是<2,问题是==2,所以我假设…说得很清楚,
wc-l;cat
无疑会更快,在记忆上肯定会更容易。re
IFS=;
:感谢您的解释;因为问题的主体提到了“equals”两次,我自由地对标题进行了相应的编辑。就这样!谢谢!:)我很好奇为什么
IFS=;
会出现。为了与问题一致,
mapfile没有“-t”在数组中保留换行符,所以我想用空字符串显式地连接这些行。标题是<2,问题是==2,所以我假设…说得很清楚,
wc-l;cat
无疑会更快,在记忆上肯定会更容易。re
IFS=;
:感谢您的解释;因为问题的主体提到了“equals”两次,我自由地对标题进行了相应的编辑。