如何将多行输入转换为 single/multiple 行输出 | BASH
How to convert a multiple line input into single/multiple line output | BASH
我真正想要的
输入:
<int>
45
</int>
<string>
Name
</string>
输出:
<int> 45 </int>
<string> Name </string>
这是我到目前为止(需要调整)为上述所需输出提出的内容:
printf "please enter some values \n"
readarray -t arr
echo "" ${arr[@]} && cat >> input.txt
我的输出:<int> 45 </int> <string> Name </string>
使用printf
$ printf '%s %s %s\n' $(cat input.txt)
<int> 45 </int>
<string> Name </string>
当你想合并每3行时,你可以使用
cat inputfile | paste -d " " - - -
当您的值可以超过一行时,您可以使用
tr -d '\n' < inputfile | sed 's#</[^>]*>#&\n#g'
或 awk
:
awk '/<\/.*>/ {print; next} {printf [=12=]}' inputfile
我真正想要的
输入:
<int>
45
</int>
<string>
Name
</string>
输出:
<int> 45 </int>
<string> Name </string>
这是我到目前为止(需要调整)为上述所需输出提出的内容:
printf "please enter some values \n"
readarray -t arr
echo "" ${arr[@]} && cat >> input.txt
我的输出:<int> 45 </int> <string> Name </string>
使用printf
$ printf '%s %s %s\n' $(cat input.txt)
<int> 45 </int>
<string> Name </string>
当你想合并每3行时,你可以使用
cat inputfile | paste -d " " - - -
当您的值可以超过一行时,您可以使用
tr -d '\n' < inputfile | sed 's#</[^>]*>#&\n#g'
或 awk
:
awk '/<\/.*>/ {print; next} {printf [=12=]}' inputfile