Get*_*ree 95 linux bash shell command-line text-manipulation
是否有任何内置的 Linux 命令允许输出一个输入字符串的 n 倍的字符串??
Adr*_*scu 103
adrian@Fourier:~$ printf 'HelloWorld\n%.0s' {1..5}
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$
Run Code Online (Sandbox Code Playgroud)
Den*_*son 86
这是一种非常便携的老式方法:
yes "HelloWorld" | head -n 10
Run Code Online (Sandbox Code Playgroud)
这是使用大括号扩展的Adrian Petrescu答案的更传统版本:
for i in {1..5}
do
echo "HelloWorld"
done
Run Code Online (Sandbox Code Playgroud)
这相当于:
for i in 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
这是派克答案的更简洁和动态的版本:
printf -v spaces '%*s' 10 ''; printf '%s\n' ${spaces// /ten}
Run Code Online (Sandbox Code Playgroud)
小智 16
这可以参数化并且不需要临时变量 FWIW:
printf "%${N}s" | sed 's/ /blah/g'
Run Code Online (Sandbox Code Playgroud)
或者,如果$N
是 bash 数组的大小:
echo ${ARR[@]/*/blah}
Run Code Online (Sandbox Code Playgroud)
小智 16
你可以使用一个技巧。回显空变量不会打印任何内容。所以你可以写:
echo word$wojek{1..100}
Run Code Online (Sandbox Code Playgroud)
如果$wojek1 $wojek2
...$wojek100
是不存在的变量,您将在没有任何其他内容的情况下重复 100 次。
Adr*_*scu 11
也许另一种对您更通用和有用的方法:
adrian@Fourier:~$ n=5
adrian@Fourier:~$ for (( c=1; c<=n; c++)) ; do echo "HelloWorld" ; done
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$
Run Code Online (Sandbox Code Playgroud)
bash shell 比大多数人想象的更强大:)
重复n
次数,只需n-1
在 之间加逗号{}
:
$ echo 'helloworld'{,,}
helloworld helloworld helloworld
Run Code Online (Sandbox Code Playgroud)
在第一个回声后重复 'helloworld' 两次。
POSIX AWK:
#!/usr/bin/awk -f
function str_repeat(s1, n1) {
s2 = ""
for (n2 = 1; n2 <= n1; n2++) {
s2 = s2 s1
}
return s2
}
BEGIN {
s3 = str_repeat("Sun", 5)
print s3
}
Run Code Online (Sandbox Code Playgroud)
或 PHP:
<?php
$s3 = str_repeat('Sun', 5);
echo $s3, "\n";
Run Code Online (Sandbox Code Playgroud)
基于@pike 的暗示
对于字符串回显字符串中的每个字符
echo ${target//?/$replace}
Run Code Online (Sandbox Code Playgroud)
=
带下划线的标题示例
export heading='ABCDEF';
export replace='=';
echo -e "${heading}\n${heading//?/$replace}"
Run Code Online (Sandbox Code Playgroud)
将输出
ABCDEF
======
Run Code Online (Sandbox Code Playgroud)
这似乎可以在 Linux 和 OS X 之间移植,这让我很高兴。
欢乐!
我在yes
解决方案中遇到过管道损坏警告,所以这是另一个不错的选择:
$ seq 4 | sed "c foo"
foo
foo
foo
foo
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
148931 次 |
最近记录: |