我如何计算bash变量中的行数,同时考虑到空度?

我们知道how to count the number of lines in a variable。但是,正如此处的评论和答案所指出的那样,对于空变量,语义是古怪的,因为空变量通常与非空,无换行符一样被计数:

import React from 'react'

    import SegmentLine from './SegmentLine'

    const Segment  = ({data})=>{

    console.log(data)

    return data && {data.map((line,i) => {
         return <SegmentLine key={i} data={line} />
    })}}
 }

export default Segment

不太好,如果您想计算返回的其他命令的结果数。

现在,在该问题的答案之一中,建议了部分解决方法:

$ echo -n "" | wc -l
0
$ echo -n "foo" | wc -l
0
$ echo "" | wc -l
1
$ echo "foo" | wc -l
1

但这也不完全是我想要的,因为它会将一个非空变量(其值是一个换行符)计为0行。

我的问题:除了“定期”计数然后明确检查是否为空的情况之外,还有一种不错的方法来获取bash中的这种计数吗?

wrnmb38 回答:我如何计算bash变量中的行数,同时考虑到空度?

import librosa import librosa.display import numpy as np import matplotlib.pyplot as plt sr = 44100 s = np.linspace(0,5,5*sr) f1 = librosa.midi_to_hz(69) # A,440 Hz f2 = librosa.midi_to_hz(84) # C,1047 Hz y = np.sin(2*np.pi*f1*s)+np.sin(2*np.pi*f2*s) fmin = librosa.midi_to_hz(36) # C2,65.4 Hz n_octaves = 6 n_bins = 12*n_octaves n_fft = 8192 hop_length = n_fft//4 ## CQT implementation # chromogram Cr = librosa.feature.chroma_cqt(y=y,sr=44100,hop_length=hop_length,norm=None,n_octaves=7) plt.figure(figsize=(10,4)) librosa.display.specshow(Cr,x_axis='time',y_axis='chroma',sr=sr,cmap="Greys") plt.colorbar(format='%+2.0f dB') plt.title('spectrogram') plt.tight_layout() plt.show() # spectrogram C =librosa.core.cqt(y,filter_scale=2,fmin=fmin,n_bins=n_bins) C_dB = librosa.amplitude_to_db(np.abs(C)) plt.figure(figsize=(10,4)) librosa.display.specshow(C_dB,y_axis='cqt_note',cmap="Greys") plt.colorbar(format='%+2.0f dB') plt.title('spectrogram') plt.tight_layout() plt.show() 进行营救:

awk
,

以下内容将计算换行符的数量:

printf %s "$var" | tr -d -c '\n' | wc -c

它将在所有情况下都有效,除非最后一行缺少换行符。


您可以像这样单独测试变量是否为空:

test -z "$var" && echo "var is empty"

test -n "$var" && echo "var is not empty"
本文链接:https://www.f2er.com/2542407.html

大家都在问