Como posso obter abaixo da saída? Eu quero o primeiro campo como está e um único caractere após o espaço.
echo "Hello world"
Hellow
Se também tiver um 3º campo, o caractere inicial do 3º campo deve estar na saída.
echo "hello world unix"
hellou
Com sed:
Edit: melhorado por glenn jackmann , obrigado!
Descrição com "hello world unix" como exemplo:
s/
substitua o seguinte padrão(\S+)
1º grupo, um ou mais caracteres sem espaço: "hello".*
na parte do meio, qualquer caractere: "world"\s
caractere de espaço: " "(\S)
2º grupo, caractere sem espaço: "u".*$
quaisquer caracteres até o final: "nix"/\1\2/
substitua pelo 1º e 2º grupo: "olá"Com bash:
Descrição com "hello world unix" como exemplo:
var_end=${var##* }
remova o padrão de prefixo correspondente, correspondência mais longa,"hello world", resultado: "unix"
${var%% *}
remover padrão de sufixo correspondente, correspondência mais longa,"world unix", resultado: "hello"
${var_end:0:1}
obter o primeiro caractere: "u"Usando
awk
para gerar a primeira palavra delimitada por espaços em branco concatenada com o primeiro caractere da última palavra delimitada por espaços em branco:A
substr()
função retorna um número de caracteres de uma determinada posição de uma string$1
e$NF
é a primeira e a última palavra delimitada por espaço em branco na linha atual, respectivamente.Teste:
Usando bash: