小编Yim*_*ong的帖子

每行重复多次

想让文件中的每一行重复固定次数。

例如,每行重复四次:

a
b
c
Run Code Online (Sandbox Code Playgroud)

变成:

a
a
a
a
b
b
b
b
c
c
c
c
Run Code Online (Sandbox Code Playgroud)

我已经进行了一些搜索,并且有很多问题和答案都是按照相反的方式进行的,例如将重复的行合并为单行,也许还有一些关于通过再次打印来加倍行的问题。

在 C 中这样做很容易,但我希望我对本地命令有更多的了解,这样我就不必一直求助于这些一次性的东西。

sed awk perl text-processing

23
推荐指数
4
解决办法
6万
查看次数

失去直流精度

我想dc用十六进制点处理一些基数为 16 的数字,但我遇到了精度问题。例如,下面,我乘F423F.FD100,无论是十六进制。预期的答案是F423FFD,而不是给出F423FFA.E1,接近但即使在四舍五入后也不够准确。

$ dc
16 d i o F423F.FD 100 * p
F423FFA.E1
Run Code Online (Sandbox Code Playgroud)

我读到这dc是一个无限精度的计算器,无论如何这都不是一个很大的数字。有什么我做错了吗?

感谢您的回答。考虑到 的问题dc,我硬着头皮写了自己的解析器来解析其他基数的实数。如果有人对代码感兴趣,我可以在这里发布。

dc

13
推荐指数
2
解决办法
1161
查看次数

将 stdin 和 stdout 重定向到端口

我想要一个程序P,它从 读取stdin和写入stdout,但将它连接到nc或任何其他端口,以便它从某个端口读取并输出到另一个端口。

# The reading is easy, here P reads from port 50505
nc -l 50505 | P
Run Code Online (Sandbox Code Playgroud)

我如何让它写回端口 60606?

io-redirection tcp udp stdout stdin

11
推荐指数
1
解决办法
2万
查看次数

RasPi - USB 麦克风锁定

在我的 RasPi 板 Debian Linux 上,USB 麦克风偶尔会被锁定,以至于没有人可以使用它。麦克风有一个 LED,它通常会闪烁,当它锁定时,它会关闭。

该实用程序arecord对其进行了如下描述:

card 1: Device [DYNEX USB MIC Device], device 0:USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

当麦克风停止工作时,arecord给出如下诊断:

> arecord -D plughw:1,0 > recording.wav
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1145: Unable to install hw_params:
ACCESS:  RW_INTERLEAVED
FORMAT:  U8
etc...
Run Code Online (Sandbox Code Playgroud)

拔下和插入麦克风修复它,只是因为当前的下降迫使 RasPi 重新启动!不是理想的情况。

有没有办法从命令行或 C 可执行文件解决这个问题?

我还尝试使用ioctl(fd, USBDEVFS_RESET, 0)from 的输出lsusb来提供总线和设备编号。这会使 LED 重新亮起,但这太过分了。必须使用 alsamixer 重新设置设备。

lock raspberry-pi usb-audio

8
推荐指数
1
解决办法
717
查看次数

grep 或 sed 无法识别某些 UTF-8 字符

试图确定文件中的所有字符。

该文件sample包括:

a e?
abandon ??bænd?n
ability ??b?l?ti
able ?e?b?l
able ?e?bl
abortion ??b?r??n
abortion ??b?r?n
about ??ba?t
above ??b?v
abroad ??br?d
Run Code Online (Sandbox Code Playgroud)

确认语言环境正确:

$ echo $LANG

en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)

获取第二个字段的命令,按字符拆分,然后计算数量:

$ cat sample | awk '{print $2}' | grep -o . | sort | uniq -c | sort -n

  1 a
  1 æ
  1 i
  1 v
  2 d
  2 t
  3 e
  3 l
  3 ?
  3 r
  4 n
  9 b
 11 ?
 17 ?
Run Code Online (Sandbox Code Playgroud)

?和在哪里? …

grep sed unicode locale

6
推荐指数
1
解决办法
7939
查看次数

从具有不同字段数的行连接字段

给定这样的输入:

x y a b c t
p q w w t
a b c d
p q r
Run Code Online (Sandbox Code Playgroud)

我想将字段 3 中的字段连接到但不包括最后一个字段。如果字段 3 是最后一个字段,我想插入一个占位符。因此,鉴于上面的输入,这是首选输出:

x y a_b_c t
p q w_w t
a b c d
p q _ r
Run Code Online (Sandbox Code Playgroud)

最终结果是所有行都将有四个字段。这在 awk 或 cut 或 sed 等中可能吗?

sed awk text-processing

5
推荐指数
1
解决办法
137
查看次数

fgrep 行首?

我想fgrep用 . 中的句点和其他元字符来处理搜索文字grep,但我需要确保该词位于行的开头。

例如,fgrep 'miss.'miss.准确匹配哪个是我想要的,但也匹配admiss.co. miss.我不想要的。

我也许能够转义元字符,例如grep '^miss\.',但源是如此之大,我一定会错过一些东西,然后需要再次运行它(将需要整个晚上)。在某些情况下,例如\1,转义代码是具有“元含义”的代码。

有什么办法解决这个问题吗?

grep bash quoting

4
推荐指数
1
解决办法
1433
查看次数

使用标准命令行实用程序提取关键字?

例如,根据维基词典,这是“when”的发音。enPR、IPA 和 X-SAMPA 是不同的发音方案。

when:* {{a|US}} {{enPR|w?n|hw?n}}, {{IPA|/w?n/|/??n/}}, {{X-SAMPA|/wEn/|/WEn/}}
Run Code Online (Sandbox Code Playgroud)

我想提取关键字when及其两个 IPA 发音,并将它们放在单独的行中:

when w?n
when ??n
Run Code Online (Sandbox Code Playgroud)

一个词可能有一个、两个或多个 IPA 发音,可能有也可能没有 enPR 或 X-SAMPA 发音。

我在考虑 PHP,列表中的列表,但这似乎有点矫枉过正,如果可能的话,我不希望用户必须安装它。有没有办法在 awk、sed、cut 或其他标准的 Unix 命令行实用程序中做到这一点?

sed awk text-processing regular-expression

2
推荐指数
1
解决办法
159
查看次数