小编cap*_*cha的帖子

如何使用grep/sed打印文件,不包括注释和空行?

我想打印出一个包含一系列评论的文件,例如:

    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
    #   SSL Engine Switch:
Run Code Online (Sandbox Code Playgroud)

实质上,该文件包含多个缩进级别,其中注释以#符号开头.

grep应该删除空行,以及在文本之前有哈希符号的行(暗示这些是注释).

我知道可以通过以下方式删除空行: grep -v '^$'

但是,如何删除带有前导空格的行,然后删除#符号,并仅打印出包含实际代码的行?我想用bash,grep和/或sed这样做.

regex perl awk grep sed

26
推荐指数
5
解决办法
5万
查看次数

无论区域设置如何,都会在批处理文件中拆分%date%

有没有办法拆分%date%批处理文件(例如,在3个环境变量中),但不管区域设置如何?今天的日期将是3/13/2013针对美国的,但是我的区域设置是13.3.2013- 分隔符已更改,订单也是如此.

windows cmd date batch-file regional-settings

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

用纯sed复杂地转置柱子

我试了几个小时为这个问题找到一个纯粹的解决方案.显然,遗憾的是我没有成功.一个非常棘手的问题.


例子(来自awk问题):

  • 输入:
aaa 111    
aaa 222
aaa 333
bbb 444
bbb 555
ccc 666
  • 输出:
aaa 111,222,333
bbb 444,555
ccc 666

  • 输入
APM00065101435 189
APM00065101435 190
APM00065101435 191
APM00065101435 390
190104555 00C7
190104555 00D1
190104555 00E1
190104555 0454
190104555 0462
APM00065101435 391
APM00065101435 392
  • 产量
APM00065101435 189,190,191,390
190104555 00C7,00D1,00E1,0454,0462
APM00065101435 391,392

我试过了什么?我的一些非工作示例:

sed -nr '1{h;b};H;x;/(\S+).*\n\1.*\'/M{x;b};s/.*\'//m;s/\n\S*\s*/,/g;s/,$//;p' file
sed -nr '1{h;b};H;x;h;s/(\S+).*\n(\S+).*\'/\1\n\2/m;/(\S+)\n\1\'/M{$!b;g;bk};g;s/\n.*\'//m;:k;s/^\S+\s//2mg;s/\n/,/g;p;x;s/.*\n//;h;$l' file2
sed -nr 'H;g;s/(\S+)\s.*/\1/gm;/(\S+)\n\1\'/M{$!b;g;bk};g;1d;s/\n.*\'//m;:k;s/\n\S+\s/,/2g;s/\n//;p;g;s/\n.*(\n.*)$/\1/;h' file2

感谢您阅读本文.

regex sed pattern-matching

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

Windows 7剩余的批处理文件参数

在Windows批处理文件中,我知道%1被第一个参数%2替换,被第二个参数%*替换,并被所有参数替换.

有没有办法在第一个之后获得所有参数?(例如参数2-N)第二个之后的所有论点怎么样?

SHIFT命令似乎没有影响%*.

windows for-loop cmd batch-file

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