在 Ed 中,我可以使用这个正则表达式测试空格:g/ *$/p
。我不认为有办法显示空格,也许通过将缓冲区的内容传递给另一个 shell 命令?
我在一个文件中有一系列标题,其名称如下:
grep ">scaffold_3" DM_v6.1_unanchoredScaffolds.fasta
>scaffold_3
>scaffold_303
>scaffold_31
>scaffold_34
>scaffold_36
>scaffold_37
>scaffold_39
>scaffold_33
>scaffold_300
我只想选择第一个,所以我尝试了:
$ grep ">scaffold_3 " file.fasta
$
$ grep ">scaffold_3[[:blank:]]" file.fasta
$
$ grep ">scaffold_3\t" file.fasta
$
$ grep ">scaffold_3\ " file.fasta
$
$ grep ">scaffold_3 " file.fasta
$
$ grep ">scaffold_3[[:space:]]" file.fasta
$
$ grep ">scaffold_3$" file.fasta
>scaffold_3
鉴于名称后面的字符可能是空格、制表符、换行符(也可能来自 Windows)并且[[:space:]]
不起作用,我如何才能获得确切的名称而不是同义词?
谢谢
我将nano
它用作文件类型的标准编辑器,它没有内置的LilyPond语法突出显示。这不是我真正需要的,尽管我在行尾错过了很多空白字符。当然我可以批量删除它们,如Strip trailing whitespace from files中所述。
但是以某种方式启用此功能应该不会太难,因此我可以从头开始编写更干净的代码。
有谁知道该怎么做?
就像nano
shell 脚本一样。
我需要替换多个文件中的一行,并且一直在使用 sed 来寻找解决方案。我遇到了这个错误:
sed: -e 表达式 #1, char 31: 未终止的 `s' 命令
尝试运行包含以下行的 bash 脚本时:
sed -i.bak "s/some-text-string/some-text-string ${stringVar}/" *.ext
我知道这是可能导致此问题的空格,但我无法在任何地方找到解决方案。我需要保留替换中的空格。我已经研究过附加字符串,但也无法使用其他函数走得很远。
我可能错误地解决了这个问题,并且觉得我应该使用不同的功能,但是我没有大量的 sed 或 bash 经验,并且已经碰壁了。
如果有人能对可能的解决方案有所了解,将不胜感激。
我正在学习 shell 脚本,为此我正在使用 HackerRank。sed
在同一个站点上有一个问题: 'Sed' command #1:
对于给定输入文件中的每一行,将单词“the”的第一次出现转换为“this”。搜索和转换应严格区分大小写。
首先我试过了,
sed 's/the/this/'
但在那个示例测试用例中失败了。然后我尝试了
sed 's/the /this /'
它奏效了。那么问题来了,空格产生了什么区别?我在这里错过了什么吗?
我正在我的服务器上恢复数据库备份,我需要观察df -h
和恢复实用程序的输出db2pd -utilities
。我试过这个:
watch -n 2 "db2pd -utilities && df -h
输出(总结):
Every 2.0s: db2pd -utilities && df -h
Database Member 0 -- Active -- Up 0 days 23:11:19
Utilities:
Address ID Type State Invoker Priority
0x000000E0 1 RESTORE 0 0 0
Progress:
Address ID PhaseNum CompletedWork
0x00003088 1 1 1073745920 bytes
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 39G 824M 36G 3% /
tmpfs 253G 16K 253G 1% /dev/shm
/dev/sda2 194M 36M 149M 20% /boot
/dev/sda1 200M 264K 200M 1% /boot/efi
/dev/sda4 20G 215M 19G 2% /home
/dev/sda5 20G 1.4G 17G 8% /opt
/dev/sda9 166G 6.6G 151G 5% /tempWork
/dev/sda7 9.7G 152M 9.0G 2% /tmp
/dev/sda6 20G 227M 19G 2% /var
实际上输出越来越长,我不得不删除一些部分,它们结合在一起变得难以阅读。我应该用什么在它们之间腾出空间?
列出 openSUSE 中的可用补丁会产生以下输出。
导致以下详细信息的命令是zypper patches
. 运行命令时也显示相同的结果zypper list-patches -a
Loading repository data...
Reading installed packages...
Repository | Name | Category | Severity | Interactive | Status | Summary
----------------------------------+--------------------+-------------+-----------+-------------+------------+---------------------------------------------------------------------------------------------------
openSUSE-Leap-15.0-Update | openSUSE-2018-1000 | recommended | moderate | --- | not needed | Recommended update for gnuhealth, proteus, tryton, trytond, trytond_purchase, trytond_stock_supply
openSUSE-Leap-15.0-Update | openSUSE-2018-1004 | security | low | --- | not needed | Security update for ffmpeg-4
openSUSE-Leap-15.0-Update | openSUSE-2018-1005 | security | moderate | --- | not needed | Security update for chromium
openSUSE-Leap-15.0-Update | openSUSE-2018-1006 | security | moderate | --- | applied | Security update for okular
openSUSE-Leap-15.0-Update | openSUSE-2018-1007 | recommended | moderate | --- | applied | Recommended update for tigervnc
例如,在尝试使用命令对“状态”进行排序时,会sort -k 6,6 listing.txt | less
产生以下输出。
----------------------------------+--------------------+-------------+-----------+-------------+------------+---------------------------------------------------------------------------------------------------
Loading repository data...
Reading installed packages...
openSUSE-Leap-15.0-Update-Non-Oss | openSUSE-2018-1082 | recommended | moderate | --- | not needed | Security update for opera
openSUSE-Leap-15.0-Update-Non-Oss | openSUSE-2018-1240 | recommended | moderate | --- | not needed | Recommended update for opera
openSUSE-Leap-15.0-Update-Non-Oss | openSUSE-2018-1294 | recommended | low | --- | not needed | Recommended update for Regina-REXX, THE, ooRexx
openSUSE-Leap-15.0-Update | openSUSE-2018-1000 | recommended | moderate | --- | not needed | Recommended update for gnuhealth, proteus, tryton, trytond, trytond_purchase, trytond_stock_supply
openSUSE-Leap-15.0-Update | openSUSE-2018-1007 | recommended | moderate | --- | applied | Recommended update for tigervnc
Repository | Name | Category | Severity | Interactive | Status | Summary
在使用 vim 中的语法高亮规则检查分隔符是否是空格和制表符的组合时,它只返回空格。
:syntax on
:set syntax=whitespace
似乎该文件可能使用多个分隔符。
- 确定正在使用的分隔符的最有效方法是什么?
- 根据使用的分隔符对列进行排序的最佳和最简单的方法是什么?
我试图编译内核模块源代码,直到我注意到一些空格导致路径名不匹配。我发现自己的目录是:
axor@vacuum:~/software/CS 8803/Operating System Concepts/Chapter 2/ch2$ ls
Makefile simple.c
我发生的错误:
axor@vacuum:~/software/CS 8803/Operating System Concepts/Chapter 2/ch2$ make
make -C /lib/modules/4.9.0-3-amd64/build M="/home/none/software/CS 8803/Operating System Concepts/Chapter 2/ch2" modules
make[1]: Entering directory '/usr/src/linux-headers-4.9.0-3-amd64'
/usr/src/linux-headers-4.9.0-3-common/scripts/Makefile.build:44: /home/none/software/CS/Makefile: No such file or directory
make[4]: *** No rule to make target '/home/none/software/CS/Makefile'. Stop.
make[3]: *** [/usr/src/linux-headers-4.9.0-3-common/Makefile:1507: _module_/home/none/software/CS] Error 2
make[2]: *** [Makefile:150: sub-make] Error 2
make[1]: *** [Makefile:8: all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.9.0-3-amd64'
make: *** [Makefile:4: all] Error 2
现在,我很清楚目录名称中的空格导致了问题。我将感兴趣的目录树重命名为~/software/CS-8803/Operating-System-Concepts/Chapter-2/ch2
,所有这些都有效。
问题:即使在包含空格的目录名称下,我如何才能使以下 makefile 正常工作?
obj-m += simple.o
all:
make -C /lib/modules/$(shell uname -r)/build M="$(PWD)" modules
clean:
make -C /lib/modules/$(shell uname -r)/build M="$(PWD)" clean
我想创建一个小的 shell 脚本,它将告诉我视频的持续时间,其文件名作为参数传递给它。它会是这样的:
$ script_name "file name with spaces.webm" # or any other media file extension
脚本文件类似于
#/bin/bash
SECRET_SAUCE_USING_$1 | mediainfo | grep Duration | sort -u
# maybe SECRET_SAUCE_USING_$1 | xargs -0 mediainfo . . .
在命令行上,这是有效的,也是我希望脚本执行的操作:
$ mediainfo file\ name\ with\ spaces.webm | grep Duration | sort -u
我试过使用类似的东西
echo "$1" | sed 's/ /\\ /g' # piped to mediainfo . . .
将文件名中的空格更改为“\”字符对(不带引号)。回声... | sed ...部分工作但mediainfo barfs
和
echo "$1" | tr ' ' '\000' | xargs -0 mediainfo . . .
将空格更改为空值并让 xargs 在文件名中使用空值而不是空格来调用 mediainfo。
到目前为止我还没有找到解决方案。(我实际上使用 zsh,而不是 bash。)非常感谢所有帮助。谢谢。
当我在 中查看带有制表符的数据时less
,制表符会扩展为空格。如果我然后使用 ctrl-c 将它们直接从终端复制出来,它们会复制为空格。另一方面,more
保留制表符,就像许多其他命令一样tail
和head
。有什么办法可以less
保持标签完好无损?
-r
-U
即使与声称将制表符视为控制字符的 结合使用,似乎也没有任何效果。我没有看到任何其他相关选项less
。